Как запросить точное отношение ManyToMany? - PullRequest
2 голосов
/ 02 февраля 2012

Допустим, у меня есть следующие классы:

class Votable(models.Model):
    name = ...

class Vote(models.Model):
    options = models.ManyToManyField(Votable, related_name='+')
    choosen = models.ForeignKey(Votable)

Примечания:

Vote.options имеют ровно 2 элемента

Vote.choosen является одним из 2 элементовопций

Как мне сделать запрос, который ищет точные 2 элемента Vote.options, а также Vote.choosen?

Я пытался Vote.objects.get(options=[1,2], choosen=1), но он возвращает:

TypeError: int() argument must be a string or a number, not 'list'

1 Ответ

3 голосов
/ 02 февраля 2012

Вам нужно объединить фильтры, чтобы получить только объекты голосования, которые имеют оба варианта 1 и 2.

Vote.objects.filter(options=1).filter(options=2).get(choosen=1)

Если вы хотите, чтобы объекты голосования имели options 1 ИЛИиспользуйте __in синтаксис:

Vote.objects.get(options__in=[1, 2], choosen=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...