фильтр django со списком значений
Я уверен, что это тривиальная операция, но я не могу выяснить, как это делается... Как создать запрос django для списка значений.
должно быть что-то умнее этого:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter( pk=id )
Я ищу, чтобы получить их всех в одном шоу с чем-то вроде:
ids = [1, 3, 6, 7, 9]
MyModel.objects.filter( pk=ids )
3 ответов
когда у вас есть список элементов, и вы хотите, чтобы проверить возможные значения из списка, то вы не можете использовать =
.
SQL-запрос будет похож на SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
что неверно. Вы должны использовать in
оператор для этого, поэтому запрос будет похож на SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
для этого Django обеспечивают __in
оператора.
Blog.objects.in_bulk([1])
{1: <Blog: Beatles Blog>}
Blog.objects.in_bulk([1, 2])
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>}
Blog.objects.in_bulk([])
{}
Blog.objects.in_bulk()
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>, 3: <Blog: Django Weblog>}
Blog.objects.in_bulk(['beatles_blog'], field_name='slug')
{'beatles_blog': <Blog: Beatles Blog>}