16.Django_ORM_外键

一、示例的表关系
这里需注意表与表之间的主从表关系,因为外键字段需要在主表(“多”的表)
1.对于助教来说,导师是从表
2.对于学生来说,课程是从表
3.对于课程来说,导师是从表
PS.
主从表的确定,需要从业务角度来确定。比如说如果这个系统是开发给老师用的,那么课程是主表;如果开发给学生用的,那么学生是主表。

在这里插入图片描述

对于我们来说项目和接口实际是主从关系,有关联,即项目是接口的主键,一对多;

  1. 新建Interface应用:
python manage.py startapp interfaces

2 .注册应用:setting.py中:

 'interfaces.apps.InterfacesConfig',

3 .interfaces/models.py中建立表结构:

from django.db import models



# Create your models here.
class Interfaces(models.Model):
    # 创建Projects模型类

    name = models.CharField(verbose_name="接口名称",max_length=200,unique=True,help_text="接口名称")
    method = models.CharField(verbose_name="接口类型",max_length=50,help_text="接口类型")
    desc = models.TextField(verbose_name="简要描述",max_length=200,help_text="简要描述",blank=True,default="")

    #设置外键

    # 第一个参数为关联的模型路径(应用名.模型类)
    #第二个参数为副表删除后,该字段的处理方式
    #CASCADE:子表也会被删除
    #SET_NULL:当前外键会被设置为None
    # PROJECT:会报错
    # SET_DEFAULT:设置默认值同时需要指定默认值,null=True

    project = models.ForeignKey('projects.Projects',on_delete=models.CASCADE,
                                verbose_name="所属项目",help_text="所属项目",null=True, blank=True)

   #设定数据库名称等信息
    class Meta:
        db_table="tb_interfaces"
        verbose_name="接口"
        verbose_name_plural="接口"

  1. 进行表迁移:
python manage.py  makemigrations    # 生成migrations临时文件
python manage.py  migrate           # 根据migrations直接生成数据库
  1. 迁移结果:
    在这里插入图片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章