首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django在多对二多中间表中创建了一个额外的不需要的条目

在多对多关系中,Django会自动创建一个中间表来管理两个相关模型之间的关系。这个中间表包含两个外键,分别指向两个相关模型,并且还可能包含其他字段。

如果在多对多关系中,你发现Django创建了一个额外的不需要的条目,可能是因为你在创建多对多关系时,没有正确地指定中间表。在Django中,你可以通过使用through参数来指定自定义的中间表。

下面是一个示例,展示了如何在多对多关系中创建一个自定义的中间表:

代码语言:txt
复制
from django.db import models

class ModelA(models.Model):
    name = models.CharField(max_length=100)
    models_b = models.ManyToManyField('ModelB', through='ModelAB')

class ModelB(models.Model):
    name = models.CharField(max_length=100)

class ModelAB(models.Model):
    model_a = models.ForeignKey(ModelA, on_delete=models.CASCADE)
    model_b = models.ForeignKey(ModelB, on_delete=models.CASCADE)
    extra_field = models.CharField(max_length=100)

在上面的示例中,我们创建了三个模型:ModelAModelBModelABModelAModelB之间的多对多关系通过ModelAB模型来管理,并且我们在ModelAB中添加了一个额外的字段extra_field

通过这种方式,你可以完全控制多对多关系中的中间表,并且可以添加任意数量的额外字段。这样,你就可以避免创建不需要的条目。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。你可以通过以下链接了解更多信息:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于“Python”Django 管理网站核心知识点整理大全52

输出表明Django建了一个名为0001_initial.py迁移文件,这个文件将在数据库 为模型Topic创建一个。...我们创建应用程序learning_logs时,Djangomodels.py所在目录建了一个名为 admin.py文件: admin.py from django.contrib import...每个 条目都与特定主题相关联,这种关系被称为一关系,即多个条目可关联到同一个主题。...这种字段不需要长度限制,因为我们 不想限制条目的长度。属性date_added让我们能够按创建顺序呈现条目,并在每个条目旁边放置 时间戳。 4处,我们Entry类嵌套了Meta类。...Meta存储用于管理模型额外信息,在这里,它让 我们能够设置一个特殊属性,让Django需要时使用Entries来表示多个条目。如果没有这个类, Django将使用Entrys来表示多个条目

13910

Django 多字段更新和插入数据实例

DjangoManyToManyField()使用以及through作用 创建一个经典多关系:一本书可以有多个作者,一个作者可以有本书(如下) ?...从图可以看出生成了三张一个是book(书籍)包含id,title两个字段,一个是author(作者)包含id,name,email三个字段,这是我们刚刚在models.py文件创建两个模型,但是有一点需要注意...,Django允许指定一个用于管理多关系中间模型,然后就可以把这些额外字段添加到这个中间模型,具体方法就是ManyToMany字段中指定through参数指定作为中介中间模型,修改上述models.py...创建BookAuthor类最后使用了自定义名称,这个也可以不用指定,系统可以自动生成名 仔细观察BookAuthor这个类,也就是我们前面讲到中间模型,同时我们看到创建中间模型时候我们创建了两个外键...=book1) 当我们使用中间模型之后,add(),remove(),create()这些方法都会被禁用,所以创建这种类型关系时候唯一方法就是通过创建中间模型实例 以上这篇Django

4.2K30

《一起学mongodb》之第四卷 索引

以 age 字段升序 height 字段升序建立了一个索引 键索引 MongoDB可以「基于数组来创建索引」。...( { ratings: 1 } ) 但是对于一个复合键索引,「每个索引最多可以包含一个数组」。...这些文本索引不存储特定于语言停止词(例如**“the”,“a”,“or”**),并且一个集合只存储根词词干。有关文本索引和搜索更多信息,请参见文本索引。...,不需要从数据页再去寻找数据 比如我此时为 children 时间创建了一个索引 db.children.createIndex({ age : 1 }) 在此时我查找年龄为两岁孩子时,就不需要从数据页中去寻找数据了...db.children.find({ age : 2 }) 前缀索引 所有的前缀索引都可以被这条索引所覆盖,不需要再去针对这些前缀建立额外索引,避免额外开销 比如我此时为 children 时间创建了

1.1K30

Django框架理解和使用常见问题

中间件一般做认证或批量请求处理,django中间件,其实是一个类,在请求和结束后,django会根据自己规则在合适时机执行中间相应方法。...事件循环 7、select_related和prefetch_related,Q和F select_related:一使用,查询主动做连...prefetch_related:或者一时候使用,不做连,做多次查询 Q:用于构造复杂查询条件 F:更新时用于获取原来值,专门取对象某一列进行操作...加入这个中间件,提交表单时候会必须加入csrf_token,cookie也会生成一个名叫csrftoken值,也会在header中加入一个HTTP_X_CSRFTOKEN值来放置CSRF攻击。...如果需要用到消息,还需要在INSTALLED_APPS添加django.contrib.message才能有效。如果不需要,可以把这两个都删除。

1.3K20

Python 项目实践三(Web应用程序)第一篇

运行了命令ls(Windows系统上应为dir),结果表明Django建了一个名为learning_log目录。...输出表明Django建了一个名为0001_initial.py迁移文件,这个文件将在数据库为模型Topic创建一个。下面来应用这种迁移,让Django替我们修改数据库: ?...我们创建应用程序learning_logs时,Djangomodels.py所在目录建了一个名为admin.py文件,为向管理网站注册Topic,请输入下面的代码: from django.contrib...2.4 定义模型Entry 要记录学到国际象棋和攀岩知识,需要为用户可在学习笔记添加条目定义模型。每个条目都与特定主题相关联,这种关系被称为一关系,即多个条目可关联到同一个主题。...从下拉列表中选择Chess,并添加一个条目。下面是我添加一个条目。 ? 再来创建一个国际象棋条目,并创建一个攀岩条目,以提供一些初始数据。下面是第个国际象棋条目

2K60

Django数据库操作之save与update使用

例如数据更新操作,单条记录,可以使用save或者是update两种方式 Django工程下settings.py下将log设置为DEBUG,即可查看save和update分别执行了哪些SQL语句...使用Django数据模型操作数据库时,了解这些底层SQL操作很有必要。...我们创建了一个叫文章Article模型,里面包含title, body和作者author等多个字段,其中author字段非空null=False。...如果你直接使用save()或form_valid()方法,是可以直接存储(m2m)关系不需要用save_m2m。...你使用了save(commit=False)方法 你model里有关系(比如tags) 假设我们文章模型里有tags这个字段,我们article_create方法需要增加一行。

2.8K10

010:Django高级模型

本章知识点 1、Django模型关系字段介绍与使用 2、Django模型关系字段查询 知识点讲解 1、Django模型关系字段介绍与使用 业务主体间关系 学生 和 专业 关系 一个学生对应一个专业...一个专业对应多个学生 一多关系 Foreignkey 外键 查询这个学生对应专业 查询这个专业所有学生 学生 和 老师关系 一个学生对应多个老师 一个老师对应多个学生 多关系...ManyToManyField 一个老师教过所有学员 一个学员所有的老师 外键 专业 一 学生 外键字段 对应 专业主键 我们研究这两种关系,从以下两个角度 1、...数据正常生成数据 额外生成关系 关系结构如下: 一个老师有多个学生 老师表里无法表示多个学生 一个学生有多个老师 学生表里无法表示多个老师 创建了关系...2、多数据 老师和学生 老师对应所有学生 学生对应所有老师 本章总结 Django模型关系字段介绍与使用 Django模型关系字段查询

51120

【云+社区年度正文】Django从入门到精通No.2----模型

1.一 因为是关联关系,所以我们必须指定两个类来进行相互操作,这里涉及到一个外键操作,即ForeignKey字段,而且外键要定义一方。...db_constraint=True # 是否在数据库创建外键约束 parent_link=False # Admin是否显示关联数据 2. ...,必须设中间关联,关联设独立主键,并引入两个“”头主键作为关联外键。...,你可以指定一个中介模型来定义多关系,可以将其它字段放在中介模型,源模型字段使用through参数指向中介模型。...db_table=None # 默认创建第三张时,数据库中表名称 3.一一 一一其实就是 一 + 唯一索引,当两个类之间有继承关系时,默认会创建一个一字段,一一使用

2.1K00

Django 2.1.7 基于默认sqlite3 模型设计 以及 数据操作

ORM框架,它帮我们把类和数据进行了一个映射,可以让我们通过类和类对象就能操作它所对应表格数据。...django内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据增删改查操作。...同时我们发现多了一个id项,这一项是Django框架帮我们自动生成创建时候id就会作为对应主键列,并且主键列自动增长。...,ServerInfo类和MiddlewareInfo类之间具有一关系,这个一关系应该定义那个类,也就是MiddlewareInfo类。...我们之后迁移生成时候,Django框架就会自动帮我们图书和英雄之间建立一个外键关系。

96440

Django 2.1.7 基于默认sqlite3 模型设计 以及 数据操作

ORM框架,它帮我们把类和数据进行了一个映射,可以让我们通过类和类对象就能操作它所对应表格数据。...django内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据增删改查操作。...同时我们发现多了一个id项,这一项是Django框架帮我们自动生成创建时候id就会作为对应主键列,并且主键列自动增长。...,ServerInfo类和MiddlewareInfo类之间具有一关系,这个一关系应该定义那个类,也就是MiddlewareInfo类。...” 我们之后迁移生成时候,Django框架就会自动帮我们图书和英雄之间建立一个外键关系。

76220

Django模型最佳实践

,默认为False blank 后台模型管理验证数据时,是否允许为NULL,默认为False choices 设定字段选项,各元组一个值是设置模型上值,第值是人类可读值 db_column...unique 设置为True时,字段值必须是唯一 verbose_name 字段在后台模型管理显示名称,未指定时使用字段名称 ForeignKey属性 limit_choices_to:值是一个...on_delete:外键关联对象被删除时对应动作,可取值包括django.db.models定义: CASCADE:级联删除。...ManyToManyField属性 symmetrical:是否建立对称多关系。 through:指定维持多关系中间Django模型。...throughfields:定义了中间模型时可以指定建立多关系字段。 db_table:指定维持多关系中间名。

2.2K40

Django 学习笔记之模型(上)

3.1 创建数据 我们上面的创建了几个模型还处于定义上,Django 还没有正真创建数据库。因此,我们需要执行两个命令来同步一下数据库。...1)ForeignKey 表示属于模型间关系一关系。我们范例模型,一家出版社 publisher 可以出版很多书 Book。...on_delete 现在可以用作第个位置参数(之前它通常只是作为一个关键字参数传递). Django 2.0,这将是一个必传参数。...3)ManyToManyField:属于模型间关系多关系。我们范例模型, Book 有一个 多字段 叫做 authors。因为他们关系是一本书由多个作者合写,一个作者可以写很多书。...在数据库 Django 创建一个中间来表示 ManyToManyField 关系。默认情况下,中间名称由两个关系名结合而成。所以刚才我们创建数据库途中,会有四张,而不是三

1.7K30

七日Python之路--第十二天(Django Web 开发指南)

对于多关系。也可以通过 through = '***' 来指向一个显式中间模型类。在这个类上可以添加额外变量。...现在需要好好研究一下了! (12)中间件 !!! Django中间件就是Python一个类,实现一个特定接口。...def myview(*args, **kwargs): #这样我们就可以使用,args[0]或kwargs['object_id'] 而不需要再记住 URLconf名称了 ##当然 Django1.6...模板输出context变量时,会隐式调用unicode方法。如果试图打印没有__unicode__方法对象,模板是不可见。...当有关联对象时,Django会给表单添加一个额外方法 save_m2m (21)区别于Model ModelFormMeta嵌套类允许你定义两个可选属性,fields和exclude

1.7K20

Mybatis中三种关联关系实现

,传递给目标 select 语句作为参数; 一查询 数据实现:使用一个外键进行关联,外键放在多方; 关联属性:可以写在一方实体类也可以写在多方实体类; 写在一方,使用list或别的集合进行关联...与一类似,resultMapcollection声明中元素类型,然后插入参数,将查询结果进行映射; 自关联查询: 数据:一张数据包含着所有的条目条目之间为一关系(一个栏目下面包含着多个栏目...当然,也可通过子栏目查找它所有的父栏目; 查询 数据:需要用一张中间表表示关系,这张中间引入两张主键作为外键; 查询方式: 多表连接查询,不需要定义中间实体类 多表嵌套查询,需要定义中间实体类...多表复杂查询,不需要定义中间实体类,但是返回值是一个List; 多表嵌套查询定义中间实体类: 由于两张之间分别单独查询,需要通过中间查找关联并使用resultMap进行映射关系处理,resultMap...复杂查询返回值是一个List: 由于一张先和中间连接,而中间关系;所以得到一个List形式查询结果; 类似这样一: ?

2.3K20

DRFManytoMany字段更新和添加

orderId 是自动生成UUID订单区域是外键,下单人也是外键,菜品orderMenu是一个多字段(其实通过我查到方法说都是外键字段就可以实现但是个人觉得菜品和订单应该是多会比较好理解...# 传入多字段时候同步传入需要更新中间id obj = OrderCenterThough(pk=i.get('id')) #...# 创建时候先创建一个centerodrer然后获取centerorderpk 再创建对应OrderCenterThough收到更新中间数据 serializer = self.get_serializer...# 找到需要更新那个中间对应id i['order_id'] = serializer.instance.pk # 组建新中间数据传入序列化器...,时候又发现了代码几个bug1、可以更新不是订单人菜品2、更新时候只能更新已经生成菜品内容,因为无法为订单添加新菜品,这个涉及到中间对应关系已经确定了。

68020

Django项目知识点(三)

模型关系 基本原则: 一,两属性实际上完全可以合并成一个,共用一个主键即可; 一,可以设中间关联,也可以将关联并入“”这头;若设独立关联,则可引入“”这头主键作为其主键...,也可另立主键并将“一”和“”两主键作为关联外键; ,则必须设中间关联,关联设独立主键,并引入两个“”头主键作为关联外键。...文章和作者之间关系就是典型关系。作者和文章关系就是一创建一行数据是,有一个可以多选下拉框 不同学生有不同课程 再比如文章和标签关系。...一一:创建一行数据时,有一个单选下拉框(下拉框内容被用过一次就消失了) 一个学生信息就只用一个对应详细信息 再比如一个用户一个用户信息。...在这里插入图片描述 必须through=‘Enroll' 就是有Enroll才能有课程,想下没有学生报名还上什么课,必须设中间关联就是学生报名表 ?

1.8K30

Django 2.1.7 模型管理器 models.Manager 以及 元选项

上一篇Django 2.1.7 模型关联讲述了关于Django模型一、自关联等模型关系。...查询数据时候,对于某种固定查询,例如视图之类查询,通用类型查询每次都需要写一遍,有没有一个地方可以将这类通用查询抽象出来,进行模型业务管理呢? 这时候就要看看模型管理器了。...默认情况下,Django 为每个Django模型类添加一个模型管理类Manager对象为objects。...将某些固定查询写到模型管理类,避免重复编写。 自定义管理器类主要用于两种情况: 1.修改原始查询集,重写all()方法 2.向管理器类添加额外方法,如向数据库插入数据。...2.管理器类定义创建对象方法 模型类对应数据进行操作时,推荐将这些操作数据方法封装起来,放到模型管理器类

54020

Django 2.1.7 模型管理器 models.Manager 以及 元选项

上一篇Django 2.1.7 模型关联 讲述了关于Django模型一、自关联等模型关系。...查询数据时候,对于某种固定查询,例如视图之类查询,通用类型查询每次都需要写一遍,有没有一个地方可以将这类通用查询抽象出来,进行模型业务管理呢? 这时候就要看看模型管理器了。...默认情况下,Django 为每个Django模型类添加一个模型管理类Manager对象为objects。...将某些固定查询写到模型管理类,避免重复编写。 自定义管理器类主要用于两种情况: 1.修改原始查询集,重写all()方法 2.向管理器类添加额外方法,如向数据库插入数据。...2.管理器类定义创建对象方法 模型类对应数据进行操作时,推荐将这些操作数据方法封装起来,放到模型管理器类

94340
领券