次のようなモデルがあります。
class Topic(models.Model):
name = models.CharField(max_length=50)
class Vote(models.Model):
user = models.ForeignKey(User, related_name='user_set')
topic = models.ForeignKey(Topic, related_name='topic_set')
score = models.IntegerField(default=0)
class Meta:
unique_together = ("user", "topic")
インデックス ビューで、すべてのトピックのリストを表示したいと考えています。ユーザーがすでにトピックに投票している場合、スコアが表示されます。ユーザーが投票していない場合は、ユーザーが投票するためのフォームを表示する必要があります。
Topic
クラスの一部としてこのメソッドを使用してモデルを拡張しました。
def user_has_already_voted(self, user):
if not Vote.objects.filter(topic=self.id,user=user.id):
return True
else:
return False
ただし、このタスクを実行するために対応するテンプレートを使用してビューを作成する方法がわからないため、これが Django での方法であるかどうかはわかりません。IndexView
現在のところ、次のようなジェネリックを使用しています。
class IndexView(generic.ListView):
template_name = 'topics/index.html'
context_object_name = 'latest_topic_list'
def get_queryset(self):
return Topic.objects.order_by('-pub_date')[:5]