Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django';s计数与关系跨度_Python_Django_Count - Fatal编程技术网

Python Django';s计数与关系跨度

Python Django';s计数与关系跨度,python,django,count,Python,Django,Count,以下是相关模型: class WhatToWearCandidates(models.Model): profile = models.ForeignKey(Profile, null=False, blank=False, related_name="outfit_candidates") look = models.ForeignKey(StyleLook, null=False, blank=False, related_name="outfit_candidates")

以下是相关模型:

class WhatToWearCandidates(models.Model):
    profile = models.ForeignKey(Profile, null=False, blank=False, related_name="outfit_candidates")
    look = models.ForeignKey(StyleLook, null=False, blank=False, related_name="outfit_candidates")

class StyleLook(models.Model):
    # Non important attributes

class LookItem(models.Model):
    look = models.ForeignKey(StyleLook, null=False, blank=False, related_name="lookitems")
    item = models.ForeignKey(Product, null=False, blank=False, related_name="looks")
我会解释这一点,每个WhatToWear候选人都有一个StyleLook和个人资料,对于每个个人资料,我们会向他们展示正确的外观。StyleLook只包含关于自身的细节

每个StyleLook都由产品组成,在表LookItem中,我们连接哪个StyleLooks包含哪些产品

问题:我正在尝试有效收集包含4种或更少产品的WhatToWear候选产品

我正在尝试使用django的
annotate()

all_candidates = WhatToWearCandidates.objects.filter(
        look__lookitems__item__assignment=assignment.id,  # This is to filter based on Products that belong in the current Assignment
        profile_id=1,  #  Example profile
        look_id=15  # Testing with 1 single look for the proper profile
    ).values('look_id').annotate(lcount=Count('look__lookitems'))
从调试器
将所有候选对象打印到
[{'look\u id':15L,'lcount':1}]
。我知道这个外观包含6种产品,所以我希望L数量等于6

为了再次检查,我尝试了一个类似的查询,取而代之的是
StyleLook

StyleLook.objects.filter(id__in=[15]).values('id').annotate(lcount=Count('lookitems'))
这将返回
[{'id':15L,'lcount':6}]


我做错了什么?如何使
lcount
WhatToWearCandidates
查询中等于6?

我想您可能在某个型号中遇到了问题。尝试将
.order\u by()
添加到查询的末尾:

all_candidates = WhatToWearCandidates.objects.filter(
    look__lookitems__item__assignment=assignment.id,
    profile_id=1,
).values('look_id').annotate(lcount=Count('look__lookitems')).order_by()

我想你可能在你的一个模型中遇到了问题。尝试将
.order\u by()
添加到查询的末尾:

all_candidates = WhatToWearCandidates.objects.filter(
    look__lookitems__item__assignment=assignment.id,
    profile_id=1,
).values('look_id').annotate(lcount=Count('look__lookitems')).order_by()

我最终重新设计了如何访问我想要的数据。我最终重新设计了如何访问我想要的数据。