数据库的表与表之间有三种关系:一对一、一对多、多对多。
那么如何通过模型建立这些关系呢
-
一对一:OneToOneField
# 一对一
#酒店预订
class Reservation(models.Model):
id = models.CharField(max_length=30,primary_key=True)
name = models.CharField(max_length=30)
booking_date = models.DateTimeField()
arrival_date = models.DateField()
#当日订单入住状态
class TodayOrderStatus(models.Model):
booking_id = models.OneToOneField(Reservation,on_delete=models.CASCADE)
status = models.IntegerField()
ER图
-
一对多ForeignKey
#产品类型
class Type(models.Model):
id = models.AutoField(primary_key=True)
type_name = models.CharField(max_length=20)
#产品
class Product2(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=50)
weight = models.CharField(max_length=20)
type = models.ForeignKey(Type,on_delete=models.CASCADE)
ER图
-
多对多 ManyToManyField
# 多对多
#科目表
class Project(models.Model):
id = models.CharField(max_length=20,primary_key=True)
name = models.CharField(max_length=50)
#学生表
class Student(models.Model):
no = models.CharField(max_length=20,primary_key=True)
name = models.CharField(max_length=30)
sex = models.CharField(max_length=2)
age = models.IntegerField()
project = models.ManyToManyField(Project)
ER图
- ManyToMany会自动生成第三张表
网友评论