набор запросов django для поля многие ко многим - PullRequest
14 голосов
/ 02 сентября 2010

У меня есть следующие модели Django 1.2:

class Category(models.Model):
    name = models.CharField(max_length=255)

class Article(models.Model):
    title = models.CharField(max_length=10, unique=True)
    categories = models.ManyToManyField(Category)

class Preference(models.Model):
    title = models.CharField(max_length=10, unique=True)
    categories = models.ManyToManyField(Category)

Как я могу выполнить запрос, который даст мне все объекты Article, связанные с какой-либо из тех же категорий, с которыми связан данный объект Preference?

например. Если у меня есть объект «Предпочтения», связанный с категориями «рыба», «кошки» и «собаки», я хочу получить список всех статей, связанных с любым из «рыб», «кошек» или «собак».

Ответы [ 2 ]

17 голосов
/ 02 сентября 2010

Попробуйте:

preference = Preference.objects.get(**conditions)
Article.objects.filter(categories__in = preference.categories.all())
2 голосов
/ 02 сентября 2010
Article.objects.filter(categories__in=myPreferenceObject.categories.all())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...