邏輯刪除
isdel-
objects管理器(Manager對象)
自定義管理器class studentManager(models.Manager): # 重寫all() def all(self): # 獲取所有數(shù)據(jù) super().all() # 邏輯刪除的數(shù)據(jù)不顯示 return super().all().filter(isdel=False)系統(tǒng)(默認自動創(chuàng)建)
objects = models.Manager()自定義
myobjects = models.Manager() -
添加類方法[快速創(chuàng)建模型對象]
@classmethod def create(cls,name,score): stu = cls(s_name=name,s_score=score) return stu
一對一
人 模型類
身份證 模型
關系: 一對一
主表(重要數(shù)據(jù)),從表(聲明關系)
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)
# 關聯(lián)(約束)
# 通過外鍵實現(xiàn),在外鍵中添加唯一約束(保證一對一)
# 存的是person對象的id
# 默認模式是 models.CASECADE
# 默認情況:當人刪除時,身份證存在,人和身份證一起刪除
# 默認情況:當人刪除時,身份證不存在,人刪除
# i_person = models.OneToOneField(Person)
# models.PROTECT保護模式:級聯(lián)數(shù)據(jù)存在,拋出異常:級聯(lián)數(shù)據(jù)不存在,直接刪除:
# 當人刪除時,身份證存在,拋出異常
# 當人刪除時,身份證不存在,直接刪除
# 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