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)
网友评论