如何在 Django 的 QuerySet 中執行此 SQL 查詢SELECT * FROM table_name WHERE culumm_name != value
我試過這個,但不是正確的方法.. 在此處輸入影像描述
uj5u.com熱心網友回復:
要執行 sql 查詢,只需使用模型的原始方法,如下所示:
posts = Post.objects.raw("SELECT * FROM table_name WHERE column_name != %s;", [value])
for post in posts:
# do stuff with post object
但我認為您不需要原始查詢(除非您想擺脫 ORM 開銷以更快地獲取記錄),您可以像這樣使用 ORM:
posts = Post.objects.all().exclude(column_name=value)
uj5u.com熱心網友回復:
您可以使用Q:
from django.db.models import Q
posts = Post.objects.filter(~Q(column_name=value))
uj5u.com熱心網友回復:
我認為您想使用 Django ORM 執行此查詢(如果我沒記錯的話)。您可以在 Django ( https://docs.djangoproject.com/en/4.0/topics/db/queries/#s-complex-lookups-with-q-objects ) 中使用Q運算式來做到這一點。對于!=您可以使用~符號。在您的情況下,查詢將如下所示
Post.objects.filter(~Q(<column_name>=<value>))
另一種使用exclude方法的方法(https://docs.djangoproject.com/en/4.0/ref/models/querysets/#s-exclude)
Post.objects.exclude(<column_name>=<value>)
在您的情況下,這兩個查詢都會生成相同的原始查詢:
SELECT * FROM <table_name> WHERE NOT (<column_name>=<value)
如果要進行原始查詢,則可以使用原始方法(https://docs.djangoproject.com/en/4.0/topics/db/sql/)
posts = Post.objects.raw("SELECT * FROM table_name WHERE column_name != %s;", [value])
如果要直接執行自定義原始查詢,請使用django.db 連接中的游標 (https://docs.djangoproject.com/en/4.0/topics/db/sql#s-executing-custom-sql-directly)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/396964.html
上一篇:如何動態預填充django表單
