• 酱狗的杂七杂八(肆)


    F()方法 & Q()方法
    # F()
    """
    	1. 可取出同一models下某一字段的值
    	2. 可批量对某一字段的值进行操作
    	
    	# 查询卖出书大于50的商品
    	result = models.Product.objects.filter(sale__gt=50)
    	print(result)
    	
    	# 查询卖出数大于库存数的商品
    	result = models.Product.objects.filter(sale__gt=F(repertory))
    	print(result)
    	
    	# 将所有商品的价格都提高 100 元
    	result = models.Product.objects.filter(price=F('price')+100)
    	print(result)
    	
    	# 将所有商品的名字后加上”爆款“二字
    	from django.db.models.functions import Concat
    	from django.db.models improt Value
    	result = models.Product.objects.update(name=Concat('name), Value('爆款'))
    	print(result)
    """
    # Q()
    """
    	1. 和 F() 方法用法类似
    	2. 增加逻辑
    	
    	# Q()的 and 查询	,
    	result = models.Product.objects.filter(Q(price=188.88),Q(name="连衣裙爆款"))
    	print(result)
    	
    	# Q()的 or 查询	|
    	result = models.Product.objects.filter(Q(price=188.88)|Q(name="连衣裙爆款"))
    	print(result)
    	
    	# Q()的 not 查询	~
    	result = models.Product.objects.filter(Q(price=188.88)|~Q(name="连衣裙爆款"))
    	print(result)
    	
    	# 混合使用	Q()必须放在普通的过滤条件前面
    	result = models.Product.objects.filter(~Q(name='连衣裙爆款'),price=188.88)
    	print(result)
    	
    	# 更改默认逻辑关系
    	from django.db.models import F, Q
    	q = Q()
    	q.connector = 'or'  
    	
    	# 通过实例对象添加条件
    	from django.db.models import F, Q
    	q = Q()
    	q.children.append(('price',188.88))
    	q.children.append(('name','高跟鞋爆款'))
    	result = models.Product.objects.filter(q)
    	print(result)
    """
    
    事物
    # 事物的 ACID
    "原子性 | 一致性 | 隔离性 | 持久性“
    
    from django.db import transaction
    from django.db.models import F
    with transaction.atomic():
        # 在with中写事物操作
        models.Product.objects.filter(pk=1).update(store=F('store')-1)
        models.Product.objects.filter(pk=1).update(sale=F('sale')+1)
    
    only & defer
    # 使用 .value取值
    """
    name = models.Product.objects.values('name') #列表套字典
    print(name)	# <QuerySet [{'name': '高跟鞋爆款'}, {'name': '连衣裙爆款'}, {'name': '帽子爆款'}]>
    """
    # 使用 .only取值
    """
    name = models.Product.objects.only('name')
    print(name)	# 仅返回该字段的数据对象	
    """
    # 使用 .defer取值
    """
    name = models.Product.objects.defer('name')
    print(name)	# 返回非该字段的数据对象
    """
    
  • 相关阅读:
    Python paramiko模块
    前端基础:JavaScript介绍
    前端基础:CSS属性操作
    前端基础:CSS样式选择器
    前端基础:HTML标签(下)
    20181120-10 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 7
    beta阶段贡献分配实施
    Beta发布—美工+文案
    20181120-8 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 06
    20181120-8 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 05
  • 原文地址:https://www.cnblogs.com/Ethan99/p/11018942.html
Copyright © 2020-2023  润新知