zoukankan      html  css  js  c++  java
  • Python 【第十四章】django数据操作之F和Q

    model操作 F/Q

    F:

    例子:如查出人名,为该人添加500工资,需要使用F功能

    from django.db.models import F    #导入F
    models.UserInfo.objects.filter().update(salary=F('salary')+500)   #查出该人后,F找出原来工资,再添加 500

    等价与SQL语句: update userinfo set salary=salary+500 

    Q:
    构造搜索条件
    1、传参
    models.UserInfo.objects.filter(id=123,name='alex')

    2、传字典
    d = {'id': 123, 'name':'alex'}
    models.UserInfo.objects.filter(**d)

    <input name='id' />
    <input name='name' />
    获取用户输入,并构造成字典:
    models.UserInfo.objects.filter(**c)
    3、传Q对象
    models.UserInfo.objects.filter(Q对象)

    from django.db.models import Q

    例子:单个条件查询

    views.py

    from django.shortcuts import render
    from django.shortcuts import HttpResponse
    from app01 import models
    from django import forms
    
    def index(request):
        # for i in range(10):
        #     models.UserType.objects.create(caption='CE'+str(i))
        # c = models.UserType.objects.all().count()
        # print(c)
        form = Indexform()
        from django.db.models import Q
        q1 = Q()
        q1.connector = 'OR'
        q1.children.append(('id',1))
        q1.children.append(('id',2))
        q1.children.append(('id',2))
        obj = models.UserType.objects.filter(q1)  #把Q查询条件引入
        for item in obj:
            print(item.id,item.caption)
        return render(request,'index.html',{'form':form})

    浏览器输入:http://127.0.0.1:8000/index/ 后可以过滤出以下结果  

     多条件查询 

     views.py

    from django.shortcuts import render
    from django.shortcuts import HttpResponse
    from app01 import models
    from django import forms
    def index(request):
        # for i in range(10):
        #     models.UserType.objects.create(caption='CE'+str(i))
        # c = models.UserType.objects.all().count()
        # print(c)
        form = Indexform()
        from django.db.models import Q
        # q1 = Q()
        # q1.connector = 'OR'
        # q1.children.append(('id',1))
        # q1.children.append(('id',2))
        # q1.children.append(('id',3))
        # obj = models.UserType.objects.filter(q1)  #把Q查询条件引入
        # for item in obj:
        #     print(item.id,item.caption)
        # return render(request,'index.html',{'form':form})
        con = Q()
        q1 = Q()
        q1.connector = 'OR'
        q1.children.append(('id', 1))
        q1.children.append(('id', 2))
        q1.children.append(('id', 3))
    
        q2 = Q()
        q2.connector = 'OR'
        q2.children.append(('caption', 'CE1'))
        q2.children.append(('caption', 'CE2'))
    
        con.add(q1, 'AND')
        con.add(q2, 'AND')
    
        obj = models.UserType.objects.filter(con)
        for item in obj:
            print(item.id,item.caption)
    
        return render(request, 'index.html', {'form': form})

     浏览器输入:http://127.0.0.1:8000/index/ 后可以过滤出以下结果  

  • 相关阅读:
    观《归来》,写《后感》
    断言(Assert)与异常(Exception)
    diff/merge configuration in Team Foundation
    【转】程序员/开发人员的真实生活[多图预警]
    【转】被诅咒的程序员的七宗罪
    【转】如此心机的老婆,不教出一个优秀的女儿才怪了
    【转】根据中国气象局提供的API接口实现天气查询
    asp.net设置默认打开页面,Web.config,defaultDocument
    强制浏览器使用兼容模式,Web.config,httpProtocol
    文献标识码、文献载体类型标识
  • 原文地址:https://www.cnblogs.com/yaabb163/p/6354608.html
Copyright © 2011-2022 走看看