【发布时间】:2017-03-02 00:22:40
【问题描述】:
我注意到Django 使用双下划线在Model.objects.filter 实例中定义lookup。
例如:
Room.objects.filter(width__lte = 10)
它是如何工作的?如何创建自己的函数,如 Django 并知道 width__lte 实际上是为 width 和 lower then or equal to 10 分开的。
【问题讨论】:
-
这里只是一个猜测:但
.filter接受**kwargs然后他们解析相应的k,v 对,其中k,在这种情况下将是字符串“width__lte”跨度> -
过滤器正在使用
**kwargs,这是正确的。但我的问题是他们是如何解析双倍分数的,他们是如何实现的? -
方法有很多种。您可以简单地拆分
"__"并从那里处理。很可能,或者至少我希望,他们使用了更复杂的东西。 -
我确定有很多方法,我想知道它在
Django中是如何实现的,我在Django代码中找不到它 -
在github.com/django/django/blob/…中搜索
LOOKUP_SEP
标签: python django django-models syntax