字段查找

字段查找就是你如何指定一个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-withends-with查询.也有大小写不敏感的版本istartswithiendswith.

最后,这仅仅是表面的东西。一个完全的参考书能够被发现在这里https://docs.djangoproject.com/en/1.7/ref/models/querysets/#field-lookups

posted @ 2015-04-12 16:05  clause_a  阅读(978)  评论(0编辑  收藏  举报