Django之F、Q查询,事务,自定义char字段
F查询
from django.db.models import F,Q
# 当查询条件来自于数据库的某个字段,这个时候就必须使用F
# 查询卖出数大于库存数的商品
res = models.Product.objects.filter(maichu__gt=F('kucun'))
# 将所有商品的价格提高100块
models.Product.objects.update(price=F('price')+100)
# 将所有商品的名字后面加一个爆款后缀
from django.db.models.functions import Concat
from django.db.models import Value models.Product.objects.update(name=F('name')+'爆款') # 错误示范
models.Product.objects.update(name=Concat(F('name'),Value('爆款')))
Q查询
# 当你的查询条件想以或的关系查询数据
models.Product.objects.filter(Q(name='变形金刚'),Q(price=999.99)) # 这样写默认还是and关系
models.Product.objects.filter(Q(name='变形金刚')|Q(price=999.99))
# Q与普通过滤条件混合使用
models.Product.objects.filter(Q(name='变形金刚'),price=100.00) Q查询进阶操作(******)
# 先实例化一个Q对象
q = Q()
q.connector = 'or'
q.children.append(('name','jason'))
q.children.append(('price',666))
# q对象支持直接放在filter括号内
models.User.objects.filter(q) # q对象默认也是and关系 事务
from django.db import transaction
with transaction.atomic():
# 这里写多个数据库操作
print('其他逻辑代码') 自定义字段类型
class MyCharField(models.Field):
def __init__(self,max_length,*args,**kwargs):
self.max_length = max_length
super().__init__(max_length=max_length,*args,**kwargs) def db_type(self):
return 'char(%s)'%self.max_length class User(models.Model):
name = models.CharField(max_length=32)
password = MyCharField(max_length=32) only与defer
# 两者是相反的
res = models.User.objects.only('name') choices字段
class User(models.Model):
name = models.CharField(max_length=32)
password = MyCharField(max_length=32)
choices = ((1,'重点大学'),(2,'普通本科'),(3,'专科'),(4,'其他'))
education = models.IntegerField(choices=choices) user_obj.education # 拿到的是数字
user_obj.get_education_display() # 固定用法 获取choice字段对应的注释
Django之F、Q查询,事务,自定义char字段的更多相关文章
- Django orm进阶查询(聚合、分组、F查询、Q查询)、常见字段、查询优化及事务操作
Django orm进阶查询(聚合.分组.F查询.Q查询).常见字段.查询优化及事务操作 聚合查询 记住用到关键字aggregate然后还有几个常用的聚合函数就好了 from django.db.mo ...
- orm中的聚合函数,分组,F/Q查询,字段类,事务
目录 一.聚合函数 1. 基础语法 2. Max Min Sum Avg Count用法 (1) Max()/Min() (2)Avg() (3)Count() (4)聚合函数联用 二.分组查询 1. ...
- Django ORM (四) annotate,F,Q 查询
annotate 可以通过计算查询结果中每一个对象所关联的对象集合,从而得出总计值(也可以是平均值或总和),即为查询集的每一项生成聚合. from django.shortcuts import re ...
- Django框架08 /聚合查询、分组、F/Q查询、原生sql相关
Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 目录 Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 1. 聚合查询 2. 分组 3. F查询和Q查询 4. o ...
- Django day08 多表操作 (五) 聚合,分组查询 和 F,Q查询
一:聚合,分组查询 二:F, Q查询
- django F与Q查询 事务 only与defer
F与Q 查询 class Product(models.Model): name = models.CharField(max_length=32) #都是类实例化出来的对象 price = mode ...
- Django的F查询和Q查询,事务,ORM执行原生SQL
F查询和Q查询,事务及其他 F查询和Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个我们自己设定的常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django ...
- django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066
1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate(*args,**kwargs) : 通过对QuerySet进行计算 ,返回一个聚合值的字典. ...
- ORM( ORM查询13种方法3. 单表的双下划线的使用 4. 外键的方法 5. 多对多的方法 ,聚合,分组,F查询,Q查询,事务 )
必知必会13条 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或 ...
随机推荐
- RadioButton分组的实现
原文:RadioButton分组的实现 XAML如下 <StackPanel> <RadioButton GroupName="colorgrp"> ...
- node lesson5--async
https://github.com/alsotang/node-lessons/tree/master/lesson5 https://github.com/nswbmw/N-blog/wiki/% ...
- EasyUI学习之menu and button(菜单和按钮)
前言 今天下午的天气感觉格外的气闷,整个人有一种黏糊糊的感觉,格外的不舒服.加之立即要放假了了,感觉自己全然坐不住呢(节前综合症么).只是学习还是的继续的. 原定计划这篇文章本来应该是关于search ...
- 微服务实践之路--RPC
微服务实践之路--RPC 重点来了,本文全面阐述一下我们的RPC是怎么实现并如何使用的,跟Kubernetes和Openstack怎么结合. 在选型一文中说到我们选定的RPC框架是Apache Thr ...
- Leetcode 226 Invert Binary Tree 二叉树
交换左右叶子节点 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ...
- 3D场景中的鼠标响应事件
原文:3D场景中的鼠标响应事件 今天要讲的是3D场景中的鼠标响应事件的处理,首先Button的响应是大家熟知的,只要加上一个click事件,然后写一个响应的处理时间就行了.对于二维平面上的一些控件也很 ...
- Expression.Blend.4 Chapter 图片和视频的使用
原文:Expression.Blend.4 Chapter 图片和视频的使用 翻译的地方可能有错误,欢迎大家指正.但是里面每一个程序都是亲自测试过,并加了点自己的看法. 我翻译的是Expression ...
- Unity3d 鼠标的事件GetMouseButtonDown()、GetMouseButton()、GetMouseButtonUp()
当鼠标按键按下时,返回一次true,后面參数0是左键,1是右键,2是中键 if(Input.GetMouseButtonDown(0)) Debug.Log("Pressed left cl ...
- asp .net 页面跳转
ajax异步 通过ajax去请求数据,然后在js里面得到返回结果,赋值location.href <div> <input id="url" /> < ...
- JS 中click和onclick的区别
1.onclick是绑定事件,告诉浏览器在鼠标点击时候要做什么 2.click本身是方法,作用是触发onclick事件,只要执行了元素的click()方法,就会触发onclick事件