1
下面是相關機型:Django的有關係伯爵跨越
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")
我會解釋這一點,每個WhatToWearCandidates有StyleLook和配置文件,每個配置文件,我們顯示正確的外觀給他們。 StyleLook只包含關於它自己的細節。
每個StyleLook都由產品組成,我們在LookItem表中連接哪些StyleLooks包含哪些產品。
問題:我試圖收集包含4個或更少產品的WhatToWearCandidates。
我試圖使用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'))
從調試all_candidates
版畫[{'look__id': 15L, 'lcount': 1}]
。我知道這個外觀包含6個產品,所以我期望lcount等於6.
要仔細檢查,我試着從StyleLook
代替了類似的查詢。
StyleLook.objects.filter(id__in=[15]).values('id').annotate(lcount=Count('lookitems'))
這將返回[{'id': 15L, 'lcount': 6}]
。
我在做什麼錯?如何在WhatToWearCandidates
查詢中將lcount
等於6?
我最終重新設計瞭如何訪問我想要的數據。 –