[英]What do double underscores indicate?
在Python中,我知道在名稱前加雙下划線會導致Python在classname
名之前加variable
名,就像_classname__variable
name(名稱_classname__variable
)一樣。 所以我的問題是,在我被要求修改的Python / Django應用程序中,存在類型為tr_rowid_debtor__de_listed_date__lte
變量(?)名稱。 這是三個變量( tr_rowid_debtor
, de_listed_date
和lte
)還是這是Python的一些特殊構造? 它發生在為Django構建查詢字符串的語句中...
query = DeTransaction.objects.select_related().filter(
tr_rowid_debtor__de_listed_date__lte=to_date,
tr_rowid_debtor__de_rowid_client__cl_rowid=in_client
).values(
'tr_rowid_debtor','tr_rowid_debtor__de_listed_date',
'tr_payment_date','tr_account','tr_to_agency','tr_to_client'
)
這里的任何建議將不勝感激。
Django的ORM使用雙下划線符號表示查詢中的某種分隔。 對於tr_rowid_debtor__de_listed_date__lte
,正在發生三件事。
tr_rowid_debtor
指定的屬性DeTransaction
這是基於接下來會發生什么關系, de_listed_date
指定要查詢的相關模型的字段 lte
表示使用<=
(小於或等於)執行比較 值得閱讀Django的查詢文檔 。 詳細介紹這些內容。
至於這是否對Python來說很特殊,不是。 __
被分配給一個名為LOOKUP_SEP
的常量。 該值與str.split()
一起使用以生成查詢的WHERE
子句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.