У меня есть немного каверзный вопрос (я думаю)Джанго фильтра ManyToManyField QuerySet
У меня есть модель под названием 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)
...
Теперь я нужен способ фильтрации сообщений с точными «х» акциями .. например. У меня есть сообщение с идентификатором «222», это сообщение делится с идентификатором учетной записи 12, 13, 16. Теперь я хочу фильтровать все сообщения, совместно используемые с идентификаторами 12, 13 и 16 учетной записи.
Как это сделать? Моя плохая попытка, как так ::;)
posts = Post.objects.filter(reduce(and_, [Q(shares=aid) for aid in account_ids]))
Вам нужно те сообщения, которые разделяются с числом «х» (то есть, счет равен x), или вам нужны те сообщения, которые специально используются для учетных записей, которые включают в себя только идентификаторы 12, 13 и 16 учетной записи или 12,13,16 и более, но должны иметь 12,13 и 16 в нем.? –
Ох ... извините ... ТОЛЬКО счета с 12,3 и 16 .., если есть больше, это будет другая группа .. .. так всегда точная доля – pkdkk