[英]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.