from django.db import models
# 人 模型类
# 身份证 模型
# 关系: 一对一
# 主表(重要数据), 从表(声明关系)
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)
# model.SET_NULL 置空模式[该字段必须设置 允许为空]
# 当人删除时,身份证存在,该属性设置null
# 当人删除时,身份证不存在,直接删除
# i_person = models.OneToOneField(Person, on_delete=models.SET_NULL, null=True)
# model.SET_DEFAULT 置默认值模式
i_person = models.OneToOneField(Person, on_delete=models.SET_DEFAULT, 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=255)
# 声明关系
# 哪个班级的学生
s_grade = models.ForeignKey(Grade,on_delete=models.SET_DEFAULT, default=1)
# 用户 模型类
# 商品 模型类
# 一个用户,可以收藏多个商品
# 一个商品,可以被多个用户收藏
# 关系: 多对多
class User(models.Model):
u_name = models.CharField(max_length=50)
u_tel = models.CharField(max_length=20)
class Goods(models.Model):
g_name = models.CharField(max_length=50)
g_price = models.IntegerField()
# 声明关系
g_user = models.ManyToManyField(User)
03-models模型关系
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...