2010-08-04 1 views
0

У меня есть модели:Джанго подзапрос через ORM

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

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

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

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

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

ответ

1

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

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

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

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

К сожалению, мое первое описание вопрос было плохо. Я редактирую тему. – Evg

 Смежные вопросы

  • Нет связанных вопросов^_^