zoukankan      html  css  js  c++  java
  • 如何用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建立关系表,自带了联合唯一约束,会自动建立关系表,但是关系表中只有两个字段,不能添加其他字段,比较死板。

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

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

  • 相关阅读:
    java中一个类中没有公共的构造方法,则说明不能让外界去new对象。
    PyQt IDE 环境搭建
    移动App开发基本技术面
    创业公司的技术管理
    软件工程师职业道德规范和实践要求
    比较好的刷题网站推荐
    对于程序员在boss直聘求职的建议
    cocospod 安装和使用
    TabBarController和其他view无法建立Relationship segue的原因
    面试与反面试的一些问题
  • 原文地址:https://www.cnblogs.com/863652104kai/p/11359702.html
Copyright © 2011-2022 走看看