Фильтрация модели путем проверки наличия в другой модели через отношения ManyToMany - PullRequest
1 голос
/ 06 августа 2010

Учитывая следующие две модели:

class Card(models.Model):
    disabled = models.BooleanField(default=False)

class User(models.Model):
    owned_cards = models.ManyToManyField(Card)

Для определенного пользователя, как я могу в одном запросе получить все объекты Card, которые не отключены и также присутствуют в поле own_cards этого пользователя?

1 Ответ

5 голосов
/ 06 августа 2010

На самом деле все довольно просто, вы можете использовать поле own_cards пользовательского объекта в качестве менеджера.

enabled_cards = theuser.owned_cards.filter(disabled=False)

Ответьте на второй вопрос в комментариях, это должно работать, используя Q объектов , чтобы отменить поиск.

not_owned_cards = Card.objects.filter(~Q(id__in=theuser.owned_cards.all()), disabled=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...