我想这个问题已经问过几次了,但问题和答案并不那么清楚。如果你能使标题问题或下面的例子更清楚。请照做。
我有一个果园,在我的果园里我有一片苹果树,而这些苹果树有苹果。问题是用我的模型:
模型
class Field(models.Model):
size = models.PositiveIntergerField()
max_tree_number = models.PositiveIntergerField()
class Tree(models.Model):
field = models.ForeignKey(Field)
date_of_planting = models.datefield(editable=False)
variety = models.CharField(max_length=200)
class Apple(models.Model):
tree = models.ForeignKey(Tree)
mass = models.PositiveIntergerField()视图
class FieldView(generic.ListView):
template = '[app_name]/index.html'
def get_context_data(self, **kwargs):
context = super(FieldView, self).get_context_data(**kwargs)
context['tree_count'] = Field._meta.model_name
context['mass'] = ???
context['apple_count'] = ???谢谢您抽时间见我
发布于 2017-10-07 11:51:15
你可以用苹果的数量和质量来注解你的查询集。
from django.db.models import Count, Sum
def get_queryset(self):
queryset = super(FieldView, self).get_queryset()
queryset = queryset.annotate(num_apples=Count('tree__apple'), apple_mass=Sum('tree__apple__mass'))
return queryset然后,当您循环遍历queryset时,您可以访问带注释的字段。
{% for obj in object_list %}
{{ obj.size }}, {{ obj.num_apples }}, {{ obj.apple_mass }}
{% endfor %}请注意,您不必在get_context_data中向上下文添加任何内容,因此您可能可以将其从视图中删除。
https://stackoverflow.com/questions/46619473
复制相似问题