我有问题的模型:
class Question(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=120)
description = models.TextField()
answers = models.ManyToManyField('Answer',related_name='answer_name', blank=True)
post_date = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.title
我有回答的模型:
class Answer(models.Model):
user = models.ForeignKey(User)
question = models.ForeignKey(Question)
ans_body = models.TextField()
post_date = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.ans_body
问题创建和答案提交工作完美。我无法正确显示特定问题的答案。但是,当我试图得到特定问题的答案时,它没有显示出来。它显示0计数。
在我看来,我得到了答案清单:
context["question_list"] = Question.objects.all()
在我的模板中
{% for question in question_list %}
{{ question.title }}
Ans:{{question.answers.count}}
{% endfor %}
当我这样做时,如果有答案我得到计数0。如何计算特定问题的答案数。
答案 0 :(得分:9)
这有效:
{{question.answer_set.count}}
快乐..
答案 1 :(得分:6)
您可以执行{{ question.answers.all.count }}
之类的操作,但如果您不仅仅是问题,那么它将导致每个问题的数据库查询。
如果要使用每个问题的计数来注释整个查询集:
from django.db.models import Count
context['question_list'] = Question.objects.all().annotate(
answer_count=Count('answers')
)
然后,您可以使用{{ question.answer_count }}
访问每个问题的计数。
答案 2 :(得分:0)
为什么不使用:Question.objects.all().count()
对于我的项目,我在“信息”模型中有一个字段
users_like = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name="%(app_label)s_%(class)s_likes", blank=True)
我使用下面的代码计算点赞次数,然后在“管理员列表”页面中显示。
# admin.py
from django.contrib import admin
from .models import Info
class InfoAdmin(admin.ModelAdmin):
list_display = ('id', 'title', 'like_count',)
def like_count(obj):
return obj.users_like.all().count()
admin.site.register(Info, InfoAdmin)
结果是: 希望这些可以帮助您!