博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python web项目(4) models【F与Q函数】
阅读量:5941 次
发布时间:2019-06-19

本文共 1468 字,大约阅读时间需要 4 分钟。

hot3.png

场景:models.py

#coding: utf8import datetimefrom django.db import modelsclass Order(models.Model):    orderid     = models.CharField(max_length=64, unique=True)    desc        = models.CharField(max_length=512)    product     = models.CharField(max_length=512, null=True)    amount      = models.IntegerField()    userid      = models.CharField(max_length=512, null=True)    create_time = models.DateTimeField(db_index=True)

1  F() ---- 专门取对象中某列值的操作

1 from django.db.models import F2 from core.models import Order3  4 order = Order.objects.get(orderid='123456789')5 order.amount = F('amount') - 16 order.save()

对应SQL语句

UPDATE `core_order` SET ..., `amount` = `core_order`.`amount` - 1 WHERE `core_order`.`orderid` = '123456789'

2 Q() ---- 对对象的复杂查询

Q对象(django.db.models.Q)可以对关键字参数进行封装,从而更好地应用多个查询。可以组合使用 &(and),|(or),~(not)操作符,当一个操作符是用于两个Q的

Python代码:

 

Order.objects.get(    Q(desc__startswith='Who'),    Q(create_time=date(2016, 10, 2)) | Q(create_time=date(2016, 10, 6)))

对应的sql 语句

SELECT * from core_order WHERE desc LIKE 'Who%' AND (create_time = '2016-10-02' OR create_time = '2016-10-06')

复杂参数:

params = []    username = request.GET.get("username")    isactive = request.GET.get("isblock")    if username:        params.append(models.Q(username__contains=username))    if isactive:        params.append(models.Q(is_block=isactive))    data = get_page_list(Account.objects.filter(*params), page_no=page_no, page_size=12)

 

转载于:https://my.oschina.net/jamescasta/blog/857659

你可能感兴趣的文章
100多个基础常用JS函数和语法集合大全
查看>>
Java8 lambda表达式10个示例
查看>>
innerHTML outerHTML innerText
查看>>
kafka安装教程
查看>>
go语言基础
查看>>
LINQ to SQL活学活用(1):这要打破旧观念
查看>>
Spring boot 嵌入的tomcat不能启动: Unregistering JMX-exposed beans on shutdown
查看>>
【Windows】字符串处理
查看>>
Spring(十八):Spring AOP(二):通知(前置、后置、返回、异常、环绕)
查看>>
CentOS使用chkconfig增加开机服务提示service xxx does not support chkconfig的问题解决
查看>>
微服务+:服务契约治理
查看>>
save
查看>>
Android DrawLayout + ListView 的使用(一)
查看>>
clear session on close of browser jsp
查看>>
asp.net mvc Post上传文件大小限制 (转载)
查看>>
关于吃掉物理的二次聚合无法实现的需要之旁门左道实现法
查看>>
mysql出现unblock with 'mysqladmin flush-hosts'
查看>>
oracle exp/imp命令详解
查看>>
开发安全的 API 所需要核对的清单
查看>>
Mycat源码中的单例模式
查看>>