簡體   English   中英

雙下划線表示什么?

[英]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_debtorde_listed_datelte )還是這是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 ,正在發生三件事。

  1. tr_rowid_debtor指定的屬性DeTransaction這是基於接下來會發生什么關系,
  2. de_listed_date指定要查詢的相關模型的字段
  3. lte表示使用<= (小於或等於)執行比較

值得閱讀Django的查詢文檔 詳細介紹這些內容。

至於這是否對Python來說很特殊,不是。 __被分配給一個名為LOOKUP_SEP的常量。 該值與str.split()一起使用以生成查詢的WHERE子句。

暫無
暫無

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

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