美文网首页
三阶段day03-视图views之查询、表格一对一关联

三阶段day03-视图views之查询、表格一对一关联

作者: ATM_shark | 来源:发表于2018-12-01 16:54 被阅读0次

    day03

    增删改查、模型定义与迁移、一对一关联

    查询

        filter(条件): 查询满足条件的信息
            例如:模型名.objects.filter()
        exclude(条件): 过滤掉满足条件的信息
            例如:模型名.objects.exclude()
        count(条件): 计算个数
        exists(): 是否存在
            例如:模型名.objects.filter().exists()
        all(): 查询所有
            例如:模型名.objects.all()
        get(条件): 查询满足条件的唯一一个对象信息
            例如:模型名.objects.get()
        first(): 结果中的第一个
            例如:模型名.objects.filter().first()
        last(): 结果中的最后一个
            例如:模型名.objects.last()
        values(): 以键值对的形式获取对象信息
            例如:模型名.objects.filter().values()
        order_by(对象属性): 排序
            例如:模型名.objects.filter().order_by()
    

    运算符

        模糊查询:contains,icontains,startwith,endwith
            例如:模型名.objects.filter(name__contains='小')
            例如:模型名.objects.filter(name__startwith='小')
            例如:模型名.objects.filter(name__endwith='小')
        大小于:gt,gte,lt,lte
            例如:模型名.objects.filter(age__gt=18)
        范围:in
            例如:模型名.objects.filter(id__in=[1,2,3,4,5])
        主键:pk
            例如:模型名.objects.filter(pk=...)
    

    聚合aggragate

        from django.db.models import Max,Min,Avg,Count,Sum
        模型.objects.all().aggragate(Avg('age'))
    

    F()/Q()

    F():对字段进行计算
    Q():与、或、非
    
     from django.db.models import Q,F
         stu1 = Student.objects.filter(Q(age=18),Q(gender=1))  并且
         stu2 = Student.objects.filter(Q(age=18)|Q(gender=1))  或
         stu3 = Student.objects.filter(Q(age=18)&Q(gender=1))  并且
         stu4 = Student.objects.filter(~Q(age=18))            非
    
         stu=Student.objects.filter(chinese__gt=F('math')+10).first()
    

    模型一对一

    定义一对一: OneToOneField()
    
        class A:
            b1 =  OneToOneField(B)
                    
        class B():
            name = CharField()
            A与B通过b1关联起来
            正向查询,已知A对象a,查询B对象: a.b1
            stu = A.objects.filter(address='美国').first()
            stui=stu.b1.name
    
        反向查询,已知B对象b,查询A对象: b.a
            stu = B.objects.filter(name='小明').first()
            stui = stu.a.address
    

    相关文章

      网友评论

          本文标题:三阶段day03-视图views之查询、表格一对一关联

          本文链接:https://www.haomeiwen.com/subject/cnfqcqtx.html