话不多说,来看表结构

这里有两个表,一个是阶段表,一个是老师表,一个老师可以带多个阶段,一个阶段也可以由多个老师带,所以是多对多关系

# 阶段表
class Stage(models.Model):
name=models.CharField(
max_length=20,
verbose_name='阶段名称'
)
def __str__(self):
return self.name
class Meta:
verbose_name_plural='阶段'
# 教师表
class Teacher(models.Model):
name=models.CharField(
max_length=20,
verbose_name='教师姓名'
)
stages = models.ManyToManyField( #多对多结构
Stage,
through='Teachstage', #指定第三方表名
# through_fields=('teacher','stage'), #第三方表中必填字段
)
def __str__(self):
return self.name
class Meta:
verbose_name_plural='教师‘
# 第三张表
class Teachstage(models.Model):
teacher=models.ForeignKey(
Teacher,
on_delete=models.CASCADE,
)
stage=models.ForeignKey(
Stage,
on_delete=models.CASCADE
)
level=models.IntegerField( # 在多对多的基础上对每一个关系增添一个字段
verbose_name='阶段代课频数',
default=0,
)

到此,多对多表结构已经创建成功,接下来,我们看看如何让将第三张表内嵌到我们的后台模板中,这里选择的是将第三张表内嵌到Teacher表中,代码如下:

# 在admin.py中
from django.contrib import admin
from teacher.models import Teacher,Teachstage class TeachstageInline(admin.TabularInline):
model = Teachstage @admin.register(Teacher)
class TeacherAdmin(admin.ModelAdmin):
inlines = [
TeachstageInline
]

显如下:

到此结束!

Django之多对多表之through第三张表之InlineModelAdmin后台内嵌的更多相关文章

  1. Django:常用字段、手动自动第三张表单、元信息

    一.常用字段和非常用字段 二.手动,自动创建第三张表 三.元信息 四.defer和only 一.常用字段和非常用字段 -常用字段 AutoField int自增列,必须填入参数 primary_key ...

  2. Django框架(十一)-- 补充:inclusion_tag、defer、only、choice、事务、创建多对多的第三张表、mvc和mtv模式

    一.inclusion_tag 1.作用 用于生成HTML片段,是数据由参数传入而变成动态 2.使用 # 1.app下新建一个模块,templatetags # 2.创建一个py文件(mytag.py ...

  3. Django框架(十二)—— 补充:inclusion_tag、defer、only、choice、事务、创建多对多的第三张表

    目录 补充:inclusion_tag.defer.only.choice.事务.创建多对多的第三张表 一.inclusion_tag 1.作用 2.使用 二.defer与only 1.定义 2.使用 ...

  4. Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)

    1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...

  5. $Django 多对多-自定义第三张表 基于双下划线的跨表查询(补充)

    自定义第三张表的好处:可以定义多个字段, 缺点:查询不方便(有方法解决) 1.第三张表设置外键,联合唯一(查询不方便) class Books(models.Model): name=models.C ...

  6. Django之modles 多对多创建第三张表

    一.第一种:纯自动创建第三张表 纯自动 class Book(models.Model): title = models.CharField(max_length=32) price = models ...

  7. django 多对多自定义第三张表时的注意事项

    杂交(自定义第三张表+ManyToManyField) # modles.py class Boy(models.Model): name = models.CharField(max_length= ...

  8. Django数据库的查看、删除,创建多张表并建立表之间关系

    配置以下两处,可以方便我们直接右键运行tests.py一个文件,实现对数据库操作语句的调试: settings里面的设置: #可以将Django对数据库的操作语法,能输出对应的的sql语句 LOGGI ...

  9. 多对多第三张表的创建方式 和 forms组件的使用

    目录 一.多对多第三张表的创建 1. 全自动方式 (1)实现代码 (2)优点和不足 2. 纯手撸方式(了解) (1)实现代码 (2)优点和不足 3. 半自动方式(推荐使用) (1)实现代码 (2)优点 ...

随机推荐

  1. 给body设置高度

    今天做一个小demo,需要给body设置高度为100%,然鹅发现只设置body的height不可行,需,html,body{height:100%;}为何呢?一个容器的height是从上一级继承而来的 ...

  2. supervisor 启动ElasticSearch报错问题

    在/etc/elasticsearch/conf.d/新建一个es的配置文件,elasticsearch.conf,这里碰到一个小坑,网上很多文章介绍的是elasticsearch.ini,启动发现找 ...

  3. Mysql 笔记(一)

    InnoDB存储引擎 mysql 存储引擎(好难用,看https://www.zybuluo.com/eqyun/note/27850) 简介 InnoDB是事务安全的MySQL存储引擎,从MySQL ...

  4. C#控件及常用属性

    1.窗体(Form) 1.常用属性 (1)Name 属性:用来获取或设置窗体的名称,在应用程序中可通过Name 属性来引用窗体. (2) WindowState 属性: 用来获取或设置窗体的窗口状态. ...

  5. eShopOnContainers学习系列(二):数据库连接健康检查

    项目里使用数据库的时候,我们有时候需要知道数据库当前的健康状态,特别是当数据库连接不上的时候能够立马获悉.eShopOnContainers里存在着大量的服务健康.连接健康的检查,数据库连接是其中之一 ...

  6. python beautiful soup

    官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ 使用前需要先安装模块,并安装解析器 pip install beautif ...

  7. java的日期时间处理(待更新)

    1. /*      * 将时间转换为时间戳      */        public static String dateToStamp(String s) throws ParseExcepti ...

  8. A-05 前向选择法和前向梯度法

    目录 前向选择法和前向梯度法 一.前向选择法 1.1 余弦相似度求投影 1.2 举例 1.3 前向选择法优缺点 1.3.1 优点 1.3.2 缺点 二.前向梯度法 2.1 举例 2.2 前向梯度法优缺 ...

  9. 【元学习】Meta Learning 介绍

    目录 元学习(Meta-learning) 元学习被用在了哪些地方? Few-Shot Learning(小样本学习) 最近的元学习方法如何工作 Model-Agnostic Meta-Learnin ...

  10. 后门免杀工具-Backdoor-factory

    水一水最近玩的工具 弄dll注入的时候用到的 介绍这款老工具 免杀效果一般..但是简单实用  目录: 0x01 backdoor-factory简介 0x02 特点功能 0x03 具体参数使用 PS: ...