Джанго: фильтр внешних ключей - PullRequest
0 голосов
/ 19 декабря 2011

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

        query = Entry.objects.all()
        print 'authors ' + repr([x.id for x in authors])
        print 'query ' + repr(query)
        print 'query ids ' + repr([x.author.id for x in query])
        query.filter(author__in=authors)
        print 'filtered ids ' + repr([x.author.id for x in query])

Что выводит это:

        authors [2]
        query [<Entry: test>, <Entry: test>]
        query ids [2, 3]
        filtered ids [2, 3]

Очевидно, что 3 не в [2]. Итак, почему отфильтрованные идентификаторы [2, 3], а не только [2]?

Привет

Ответы [ 2 ]

3 голосов
/ 19 декабря 2011

Когда вы звоните query.filter(author__in=authors), он возвращает новый набор запросов. Он не изменяет существующий набор запросов.

Если вы назначите новый набор запросов для запроса, вы получите ожидаемый результат.

query = query.filter(author__in=authors)
print 'filtered ids ' + repr([x.author.id for x in query])
1 голос
/ 19 декабря 2011

Попробуйте вместо вашего текущего фильтра:

query = query.filter(author__in=authors)
...