は、関連するモデルですまたがり: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はProductsで構成され、LookItemテーブルにはどのStyleLooksにどのProductsが含まれているかを接続します。
質問:4つ以下の製品を効率的に含むWhatToWearCandidatesを収集しようとしています。
私は[{'look__id': 15L, 'lcount': 1}]
にデバッガall_candidates
印刷物から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'))
を使用しようとしています。私はこの外観に6つの製品が含まれているので、lcountは6と予想されています。
もう一度チェックするには、StyleLook
から同様のクエリを試しました。
StyleLook.objects.filter(id__in=[15]).values('id').annotate(lcount=Count('lookitems'))
これは[{'id': 15L, 'lcount': 6}]
を返します。
私は間違っていますか? WhatToWearCandidates
クエリでlcount
を6にするにはどうすればよいですか?
私が望むデータへのアクセス方法を再設計しました。 –