首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从视图中的另一个模型中获取字段?

如何从视图中的另一个模型中获取字段?
EN

Stack Overflow用户
提问于 2017-10-07 11:07:01
回答 1查看 1.7K关注 0票数 1

我想这个问题已经问过几次了,但问题和答案并不那么清楚。如果你能使标题问题或下面的例子更清楚。请照做。

我有一个果园,在我的果园里我有一片苹果树,而这些苹果树有苹果。问题是用我的模型:

  1. 如何获得给定字段中的苹果数
  2. 在该领域生产的所有苹果的总质量()

模型

代码语言:javascript
复制
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()

视图

代码语言:javascript
复制
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'] = ???

谢谢您抽时间见我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-07 11:51:15

你可以用苹果的数量和质量来注解你的查询集。

代码语言:javascript
复制
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时,您可以访问带注释的字段。

代码语言:javascript
复制
{% for obj in object_list %}
  {{ obj.size }}, {{ obj.num_apples }}, {{ obj.apple_mass }}
{% endfor %}

请注意,您不必在get_context_data中向上下文添加任何内容,因此您可能可以将其从视图中删除。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46619473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档