-
逻辑删除
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
网友评论