啦啦啦啦~Django1.96---字段查询

字段查询

字段查询是指如何指定SQL WHERE 子句的内容。

它们通过查询集方法filter()exclude() 和 get() 的关键字参数指定。

查询的关键字参数的基本形式是field__lookuptype=value(中间是两个下划线)。例如:

>>> Entry.objects.filter(pub_date__lte='2006-01-01')
翻译成SQL(大体)是:

SELECT * FROM blog_entry WHERE pub_date <= '2006-01-01';

查询条件中指定的字段必须是模型字段的名称。

但有一个例外,对于ForeignKey你可以使用字段名加上_id 后缀

在这种情况下,该参数的值应该是外键的原始值。例如:

>>> Entry.objects.filter(blog_id=4)

如果你传递的是一个不合法的参数,查询函数将引发 TypeError

这些数据库API 支持大约二十多种查询的类型

下面是一些你可能用到的常见查询:

exact: “精确”匹配。 例如:
>>> Entry.objects.get(headline__exact="Man bites dog")

将生成下面的SQL:

SELECT ... WHERE headline = 'Man bites dog';

如果你没有提供查询类型 —— 即如果你的关键字参数不包含双下划线 

—— 默认假定查询类型是exact

例如,下面的两条语句相等:

>>> Blog.objects.get(id__exact=14)  # Explicit form
>>> Blog.objects.get(id=14)         # __exact is implied

这是为了方便,因为exact 查询是最常见的情况。

iexact: 大小写不敏感的匹配。 所以,查询:
>>> Blog.objects.get(name__iexact="beatles blog")

将匹配标题为"Beatles Blog""beatles blog" 甚至"BeAtlES blOG" 的Blog

contains: 大小写敏感的包含关系测试。 例如:
Entry.objects.get(headline__contains='Lennon')

大体可以翻译成下面的SQL:

SELECT ... WHERE headline LIKE '%Lennon%';

注意,这将匹配'Today Lennon honored' 但不能匹配'today lennon honored'

还有一个大小写不敏感的版本,icontains

startswithendswith
分别表示以XXX开头和以XXX结尾。
当然还有大小写不敏感的版本,叫做istartswith 和 iendswith




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值