簡體   English   中英

如何使用值列表過濾Django查詢?

[英]How can I filter a Django query with a list of values?

我確信這是一個微不足道的操作,但我無法弄清楚它是如何完成的。

必須有比這更聰明的東西:

ids = [1, 3, 6, 7, 9]

for id in ids:
    MyModel.objects.filter(pk=id)

我希望通過以下方式將它們全部放入一個查詢中:

MyModel.objects.filter(pk=[1, 3, 6, 7, 9])

如何使用值列表過濾Django查詢?

Django文檔

Blog.objects.filter(pk__in=[1, 4, 7])

當您有項目列表並且想要從列表中檢查可能的值時,則不能使用=

sql查詢將類似於SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9] ,這不是真的。 你必須in運算符中使用這個,所以你的查詢將像( SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9) __in SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)那樣Django提供__in運算符。

Django文檔

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>}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM