如何用Django建关系表

在models.py文件中通过定义类来创建表

创建一对一关系表

员工信息表:id、姓名、年龄

工资表:id、员工id、薪资(员工id与员工信息表的id一一对应)

class UserInfo(models.Model):
    name = models.CharField(max_length=32,null=True)
    age = models.IntegerField()

class Private(models.Model):
    salary = models.CharField(max_length=32,null=True)
    sp = models.OneToOneField('UserInfo')  # OneToOneField对应员工表信息表的id

创建一对多关系表

班级表:id、班级名称

学生表:id、学生姓名、所在班级(关联班级表id)

class Classes(models.Model):
    cname = models.CharField(max_length=32,null=True)
    
class Student(models.Model):
    sname = models.CharField(max_length=32,null=True)
    sc = models.ForeignKey('Classes')  # 通过ForeignKey外键关联班级表的id

创建多对多关系表

男生表:id、姓名

女生表:id、姓名

相亲记录表:id、男生id、女生id

# 方式一:通过ManyToManyField建立多对多关系表
class Boy(models.Model):
    bname = models.CharField(max_length=32,null=True)
    g = models.ManyToManyField('Girl',null=True)  

class Girl(models.Model):
    gname = models.CharField(max_length=32,null=True)
    
# 方式二:自定义关系表
class Boy(models.Model):
    bname = models.CharField(max_length=32,null=True)

class Girl(models.Model):
    gname = models.CharField(max_length=32,null=True)

class Boy2Girl(models.Model):
    b_id = models.ForeignKey('Boy')  # 外键关联Boy表中的id
    g_id = models.ForeignKey('Girl')  # 外键关联Girl表中的id

    class Meta:
        # 建立联合唯一索引
        unique_together = [
            ('b_id','g_id')
        ]
        """
        # 这是建立联合索引
        index_together=[
            ('b_id','g_id')
        ]"""
  • 方式一通过ManyToManyField建立关系表,自带了联合唯一约束,会自动建立关系表,但是关系表中只有两个字段,不能添加其他字段,比较死板。

  • 方式二自定义关系表可以添加其他字段,相对灵活。

可根据业务需求选择使用,但推荐使用自定义方式建表

转载于:https://www.cnblogs.com/863652104kai/p/11359702.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值