美文网首页
Django笔记:数据库多表操作

Django笔记:数据库多表操作

作者: 倔犟的贝壳 | 来源:发表于2021-05-30 13:08 被阅读0次

    数据库的表与表之间有三种关系:一对一、一对多、多对多。
    那么如何通过模型建立这些关系呢

    • 一对一: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会自动生成第三张表

    相关文章

      网友评论

          本文标题:Django笔记:数据库多表操作

          本文链接:https://www.haomeiwen.com/subject/evbysltx.html