Django подзапрос через Orm - PullRequest
       9

Django подзапрос через Orm

0 голосов
/ 04 августа 2010

У меня есть модели:

class Site(models.Model):
    profile = models.ForeignKey(User)

class Profile(models.Model):
    blacklist = models.ManyToManyField(Site)

Как я могу сделать эквивалент этого запроса через django orm?

SELECT * FROM site WHERE 2 NOT IN (SELECT site_id FROM profile_blacklist WHERE profile_site.profile_id=site.profile_id)

Мне нужен какой-то фильтр черного списка. У каждого сайта есть пользователь (профиль). У этого пользователя есть черный список сайтов. Я делаю поиск сайта с id = 2 для примера. И мне нужны сайты, у владельцев которых нет сайта № 2 в черном списке.

1 Ответ

1 голос
/ 04 августа 2010

Не думайте с точки зрения SQL.Подумайте, какой результат вы хотите.

Я не совсем понимаю, почему вы все равно используете подзапрос в этом SQL.Похоже, что вы хотите, чтобы найти все сайты, которые имеют категорию с идентификатором 2. Это правильно?

Если так, то вы хотите:

Site.objects.filter(category__id=2)
...