码迷,mamicode.com
首页 > 其他好文 > 详细

Django ORM相关

时间:2018-12-20 18:59:56      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:事务   update   nbsp   增加   操作   关系   classes   姓名   closed   

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相关

标签:事务   update   nbsp   增加   操作   关系   classes   姓名   closed   

原文地址:https://www.cnblogs.com/erhao9767/p/10150624.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!