簡體   English   中英

如何過濾 Django ORM 上的查詢

[英]How to filter a query on Django ORM

我知道這應該是非常基本的,但不知何故我不太明白。 我想獲取所有年齡小於 18 歲的用戶,因此查詢應該是這樣的

User.objects.filter(age < 18)

我做錯了什么?

為了使用小於過濾器進行過濾,您可以使用__lt查找 [Django-doc]

User.objects.filter(age__lt=18)

或者,如果您想過濾某個字段表達式的屬性,您可以先注釋:

from django.db.models import F

User.objects.annotate(
    age=F('age1') + F('age2')
).filter(age__lt=18)

或者如果你想減去一個數字:

from django.db.models import F

User.objects.annotate(
    ageminus=F('age') - 5
).filter(ageminus__lt=18)

在此示例中, User對象沒有age字段,但有age1age2字段。 首先我們引入一個注解age ,即這兩個字段的總和。

通過編寫.filter(age < 18) ,Python 解釋器將查找名為age的變量,如果確實存在(不是 per),則將其與18進行比較,並將結果作為位置參數傳遞給filter(..) . 所以除非你使用一些代理對象,就像 SqlAlchemy 那樣,否則是行不通的。

暫無
暫無

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

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