【发布时间】:2016-07-19 00:49:43
【问题描述】:
我有一个有点棘手的问题(我想)
我有一个名为 Post(models.Model) 的模型:具有称为共享的多对多关系
class Post(models.Model):
account = models.ForeignKey(Account, related_name="account")
shares = models.ManyToManyField(Account, related_name="shares_account", through='Share')
...
class Share(models.Model):
post = models.ForeignKey(Post)
account = models.ForeignKey(Account)
new = models.BooleanField(default=True)
...
现在我需要一种方法来过滤具有确切“x”份额的帖子......例如。我有一个 ID 为“222”的帖子,此帖子与帐户 ID 12、13、16 共享。现在我想过滤与帐户 ID 12、13 和 16 共享的所有帖子。
我该怎么做? 我的糟糕尝试是这样的:: ;)
posts = Post.objects.filter(reduce(and_, [Q(shares=aid) for aid in account_ids]))
【问题讨论】:
-
您需要与“x”个帐户共享的那些帖子(即计数等于 x),或者您想要那些专门与包含帐户 ID 12 的帐户共享的帖子,仅 13 和 16 或 12,13,16 及更多,但必须包含 12,13 和 16。?
-
哦 .. 抱歉 ... 只有 12,3 和 16 的帐户 ..,如果有更多,它将是另一个组 .. .. 所以总是确切的一些份额跨度>
标签: django filter many-to-many