2016-12-09 2 views
3

У меня есть список почтовых индексов, например: -Использование Django Query содержит список в качестве источника?

postcodes = ['LDN 4DN','MAN 4RF'] 

Адресное поле имеет почтовый индекс в нем, образец адреса поля

«1 Даунинг-стрит, Лондон, Англия, LDN 4DN» '10 проспекты, Манчестер, Англия, MAN 4RF» '20 в Highalnds, Шотландия, SCT L40'

Im использованием

site = SiteData.objects.filter(address__icontains=postcodes[0])) 

В цикле, чтобы получить каждый сайт, но это кажется немного длинным, можно ли его содержать?

Можно ли запустить запрос, чтобы получить, например, записи для двух почтовых индексов в списке?

Благодаря

+0

Я изменил свой вопрос, чтобы сделать его немного яснее, что проблема есть. не стесняйтесь отскакивать, если это неверно – Sayse

+0

привет, я надел его, чтобы он был случайным? вопрос заключался в том, как я могу использовать contains и in, в том же запросе. – AlexW

+0

'icontains' является нечувствительным к регистру, содержит сам по себе, что' in' по существу делает так или иначе – Sayse

ответ

7

Это не будет работать, очевидно, - но вы можете использовать models.Q построить «или» запрос:

import operator 

clauses = (Q(address__icontains=p) for p in postcodes) 
query = reduce(operator.or_, clauses) 
site = SiteData.objects.filter(query) 
+0

безупречный! благодаря – AlexW

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