django03一对多关系

  • 逻辑删除
    isdel

  • objects管理器(Manager对象)
    自定义管理器

    class studentManager(models.Manager):
        # 重写all()
        def all(self):
        # 获取所有数据 super().all()
        # 逻辑删除的数据不显示
        return super().all().filter(isdel=False)
    

    系统(默认自动创建)

     objects = models.Manager()
    

    自定义

      myobjects = models.Manager()
    
  • 添加类方法[快速创建模型对象]

    @classmethod
    def create(cls,name,score):
        stu = cls(s_name=name,s_score=score)
        return stu
    

一对一

人 模型类
身份证 模型
关系: 一对一
主表(重要数据),从表(声明关系)
class Person(models.Model):
    p_name =models.CharField(max_length=50)
    p_age = models.IntegerField()
    
    
class IDCard(models.Model):
    i_num = models.CharField(max_length=50)
    i_addr = models.CharField(max_length=255)

    # 关联(约束)
    # 通过外键实现,在外键中添加唯一约束(保证一对一)
    # 存的是person对象的id
    
    
    # 默认模式是 models.CASECADE
    # 默认情况:当人删除时,身份证存在,人和身份证一起删除
    # 默认情况:当人删除时,身份证不存在,人删除
    # i_person = models.OneToOneField(Person)
    
    
    # models.PROTECT保护模式:级联数据存在,抛出异常:级联数据不存在,直接删除:
    # 当人删除时,身份证存在,抛出异常
    # 当人删除时,身份证不存在,直接删除
    # i_person = models.OneToOneField(Person,on_delete=models.PROTECT)
   
   
    # models.SET_NULL 置空模式[该字段必须设置  允许为空]
    # 当人删除时,身份证存在,该属性设置bull
    # 当人删除时,身份证不存在,直接删除
    # i_person = models.OneToOneField(Person, on_delete=models.SET_NULL, null=True)    
    
    # model.SET_DAFAULT 设置默认值模式
    # i_person = models.OneToOneField(Person, on_delete=models.SET_DAFAULT, default=11)    
    

一对多

班级 模型类
学生 模型类
一个班对应多个学生
class Grade(models.Model):
    g_name = models.CharField(max_length=50)

class Student(models.Model):
    s_name = models.CharField(max_length=50)
    s_score = models.IntegerField()
    s_detail = models.CharField(max_length=50)
    
    # 声明关系
    # 哪个班级的学生
    s_grade = models.ForeignKey(Grade,on_delete=models.SET_DETAULT,default=1)

student_set是object同源
主获取从,隐式访问,对象.关系表(小写)_set.all()
student = grade.student_set.all()
从获取主,显示访问:对象.属性
grade = stu.s_grade

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 2,113评论 0 9
  • Django 准备 “虚拟环境为什么需要虚拟环境:到目前位置,我们所有的第三方包安装都是直接通过 pip inst...
    33jubi阅读 1,395评论 0 5
  • ORACLE自学教程 --create tabletestone ( id number, --序号usernam...
    落叶寂聊阅读 1,257评论 0 0
  • 切换到创建项目的目录 cd C:\Users\admin\Desktop\DjangoProject创建名为pr...
    在努力中阅读 3,547评论 2 3
  • 在从事汉民族相貌研究的推理过程前,我们首先必须对近期在中国大陆上所发现的新中国古代史的发端,大致加以叙述。 关于中...
    新国学易经阅读 622评论 0 0

友情链接更多精彩内容