Django ORM相关

Posted erhao9767

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django ORM相关相关的知识,希望对你有一定的参考价值。

1. ORM 外键关联查询和多对多关系正反向查询

技术分享图片
Class Classes():
    name = CF

class Student():
    name = CF
    class = FK(to="Classes")

class Teacher():
    name = CF
    classes = M2M(to="Classes",related_name="teacher")
简单表结构
技术分享图片
    # Fk 正向查找
    obj = models.Student.objects.first()
    print(obj.class_id)

    # FK 反向查找
    obj = models.Classes.objects.first()
    print(obj.student_set.all())

    # M2M 正向查找
    obj = models.Teacher.objects.get(pk=1)
    print(obj.classes.all())

    # M2M 反向查找
    obj = models.Classe.objects.get(pk=1)
    print(obj.teacher.all())
简单实例

 

2. F查询和Q查询

  F查询可以对当前查询出来的对象取值,就是像自赋值 a = a+20,更新字段方便

技术分享图片
from django.db.models import F
from app01.models import Book

Book.objects.update(price=F("price")+20)  # 对于book表中每本书的价格都在原价格的基础上增加20元
F查询

  Q查询可以对当前查询的表进行多次筛选,可以组合使用&, | ,比如查询2005年初生且姓是W开头的, 2005年初始或姓名是W揩油的

技术分享图片
from django.db.models import Q

obj = student.objects.filter(Q(Bd_year=2005) & Q(name_startswith="W"))


obj = student.objects.filter(Q(Bd_year=2005) | Q(name_startswith="W"))
Q查询

 

3. ORM事务操作

技术分享图片
    from app01 import models
 
    try:
        from django.db import transaction
        with transaction.atomic():
                (进行事务操作)
    except Exception as e:
        pass    
事务简单实例

 

以上是关于Django ORM相关的主要内容,如果未能解决你的问题,请参考以下文章

Django学习---Models(ORM框架)

Django之ORM

Django之ORM操作

Django---ORM操作大全

python之路_django ORM相关补充

python-django框架-orm相关继续&ORM的增删改查操作_20191110