字段查找
字段查找就是你如何指定一个SQL WHERE子句。它们被指定作为关键字参数来传递到查询集方法filter(),exclude()和get().
基本的关键字参数查询采用field__lookup=value这种形式。(那是一个双下划线)。例如:
翻译(大概的)成下列SQL:
这是怎么实现的 Python有定义()函数的能力。对于更多信息看官网的Python指南的这里。http://docs.python.org/tutorial/controlflow.html#keyword-arguments |
在一个查询中被指定的字段必须是一个模型字段的名字。一旦对于一个外键你把字段名指定为_id后缀,将会产生一个异常。在这种情况下,值参数被期望包含外部模型的主键的原始值。例如:
如果你传递了一个不可利用的关键字参数,一个查询函数将会产生一个异常。
数据库API支持大约两打查阅类型:一个完全的查阅能被发现在这里https://docs.djangoproject.com/en/1.7/ref/models/querysets/#field-lookups,为了让你知道一下什么是可利用的,下列是你可能使用的更多常用查询中的一部分:
exact
一个“extract”匹配。例如:
将会生成这样的SQL:
如果你不提供一个查阅类型——也就是,如果你的关键字参数没有包含双下划线——查阅类型被假设为extract。
例如:下列两个语句是等价的:
这是为了方便,因为extract查询是最常见的情况。
iextract
一个大小写不敏感的匹配。因此,查询:
将会匹配一个Blog标题如:”Beatles Blog”, “beatles blog”,或者甚至”BeAtLES blOG”
Contains
大小写敏感的包含测试。例如:
大概地被翻译成这样的SQL:
注意这将首行’Today Lennon honored’ 却不是’today lennon honored’。
也有大小写不敏感的版本,icontains。
startswith,endswith
分别的进行starts-with和ends-with查询.也有大小写不敏感的版本istartswith和iendswith.
最后,这仅仅是表面的东西。一个完全的参考书能够被发现在这里https://docs.djangoproject.com/en/1.7/ref/models/querysets/#field-lookups