【发布时间】:2016-01-12 01:12:39
【问题描述】:
我想做一些与this 稍有不同的事情。
假设我的 models.py 中有这样的东西:
class Hipster(models.Model):
name = CharField(max_length=50)
has_iphone = BooleanField(default=True)
class Party(models.Model):
participants = models.ManyToManyField(Hipster, related_name="participants")
然后做:
hip_parties = Party.objects.filter(participants__has_iphone__istrue__count=4)
我该怎么做?
更新:
>>> Question.objects.filter(options__is_correct=True).annotate(options__count=Count('options')).filter(options__count=0)
[]
>>> q = Question.objects.get(id=49835)
>>> q.options.all()[0].is_correct
False
>>> q.options.all()[1].is_correct
False
>>> q.options.all()[2].is_correct
False
>>> q.options.all()[3].is_correct
False
>>> q.options.all()[4].is_correct
False
>>> q.options.all()[5].is_correct
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/patrickbassut/Programming/logus/lib/python2.7/site-packages/django/db/models/query.py", line 177, in __getitem__
return list(qs)[0]
IndexError: list index out of range
【问题讨论】:
-
你可以简单地使用像 Party.objects.filter(participants__has_iphone).count() 这样的计数,然后你就可以完成剩下的逻辑了
-
我认为这行不通。
-
您与个人资料有多对多的关系。 Profile 是否有 has_iphone 字段?
-
抱歉,刚刚更正了。它应该是
Hipster。
标签: django django-models