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

为什么FormSet在django2中只保存一个表单的数据

在Django2中,FormSet是一个用于处理多个表单的工具。它允许我们以集合的形式处理多个表单,通常在表单需要重复出现的情况下使用。

尽管FormSet可以一次性处理多个表单,但在Django2中,默认情况下它只保存一个表单的数据。这是因为FormSet的设计初衷是处理表单集合中每个表单的校验和保存操作,并且通常与ModelForm一起使用。

为了更好地理解为什么FormSet在Django2中只保存一个表单的数据,我们需要了解FormSet的工作原理。FormSet是基于Form类创建的,通过将每个表单的数据保存为一个单独的表单实例来工作。在保存表单数据时,FormSet会根据表单的校验结果来决定是否保存该表单的数据。如果某个表单的校验失败,FormSet会停止保存后续表单的数据,并返回错误信息。

这种设计主要是为了确保表单数据的一致性和完整性。如果所有表单的数据都被保存,而其中某个表单的数据出现问题,可能会导致整个表单集合的数据都不可用。因此,Django2中的FormSet默认只保存校验通过的第一个表单的数据,以确保数据的有效性。

然而,如果我们需要保存多个表单的数据,可以通过对FormSet进行额外的配置来实现。我们可以使用FormSet的clean方法进行自定义校验,并在此方法中处理多个表单的保存。另外,可以通过设置FormSet的can_delete属性为True来允许删除表单数据。

总结起来,FormSet在Django2中默认只保存一个表单的数据,这是为了确保数据的一致性和完整性。如果需要保存多个表单的数据,可以通过对FormSet进行额外的配置来实现。

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

相关·内容

Django表单集合----Formset

Formset表单集)是多个表单集合。FormsetWeb开发应用很普遍,它可以让用户一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息。...例如, extra=2 , max_num=2 并且formset一个 initial 初始化项,则会显示一张初始化表单和一张空白表单。...2、如果初始数据数量超过 max_num ,那么 max_num 值会被无视,所有初始数据表单都会显示,并且也不会有额外表单显示。...例如,假设 extra=3 , max_num=1 并且formset有两个初始化项,那么只会显示两张有初始化数据表单。...该方法一个参数和第二个参数都是模型,其中第一个参数必需是ForeignKey。

1.2K30

自定义 Django 管理界面多对多内联模型

例如,如果存在一个产品模型和一个发票模型,并且产品和发票之间是多对多关系,那么发票管理界面,Django 会显示一个表格,其中包含所有产品及其对应复选框。...具体步骤如下:创建一个内联模型类。这个类继承自 admin.TabularInline 或 admin.StackedInline。内联模型类,重写 get_formset() 方法。...这个方法负责返回一个表单集,表单集中每个表单对应于内联模型一个对象。 get_formset() 方法,使用 formset_factory() 函数创建表单集。... formset_factory() 函数,指定 model 参数为内联模型模型类,并指定 fields 参数为内联模型需要显示字段。...这两个方法分别负责判断用户是否有添加和修改内联模型对象将新内联模型类添加到 ModelAdmin 类 ModelAdmin 类 inlines 属性,添加新内联模型类。

11110
  • 37.Django1.11.6文档

    使用commit=False 另外一个副作用是模型具有多对多关系时候。 如果模型具有多对多关系而且当你保存表单时指定commit=False,Django 不会立即为多对多关系保存表单数据。 ...(6)提供初始值 作为一个有参数表单, 实例化一个表单时可以通过指定initial字段来指定表单数据初始值. 这种方式指定初始值将会同时替换掉表单字段和值. ...(8)表单保存对象 做为 ModelForm, 你可以保存数据到模型对象 ,以下就完成了表单 save()方法: # Create a formset instance with POST data...如果给定实例数据绑定数据没有更改,那么实例将不会保存数据库,并且不会包含在返回值(在上面的示例为instances)。...唯一区别是我们调用formset.save()将数据保存数据

    24.3K80

    Django 表单传递自定义表单值到视图

    Django,我们可以通过表单初始化参数initial来传递自定义初始值给表单字段。如果我们想要在视图中设置表单初始值,可以视图中创建表单实例时,传递一个字典给initial参数。...1、问题背景我们遇到了这样一个问题:使用 Django 表单时,我们希望将自定义表单值传递到视图中。然而,我们发现无法为多选选项每个选项传递值。...渲染表单时,只有一个字符字段,而多选框中有多个选择。我们想知道是否有办法解决这个问题,以及表单集是否可以在这里提供帮助。我们对 Django 还很陌生,因此希望得到一些解释,以便更好地理解和学习。...{% if field.errors %} {{ field.errors|striptags }} {% endif %}{% endfor %}2、解决方案方法一:生成所需数量字段一种解决方案是编写一个循环来生成所需数量字段...表单集允许我们创建一组类似的表单,每个表单都可以处理单个对象。我们例子,我们可以创建一个表单集来处理每个 StateOptionOutcome 对象。

    11110

    为什么深度学习,AlphaGo Zero是一个巨大飞跃?

    这就好像AlphaGo Zero学习如何改进自己学习状态。它花了3天时间就达到了一个打败了最好的人类选手水平。而且,即使它超越了之前最好AlphaGo实现之后,它也会变得越来越好。...它如何能够不断地改进它学习? 我们另一种称为FeedbackNet架构中看到了这种不断学习和改进相同神经网络能力。基于SGD学习,相同网络多次epoch馈送数据。...该网络通过将自身与外部训练数据进行比较,而不是从先前版本神经网络获得合成数据来学习。 第四点是,之前系统,它只需要4个Google TPUs,而之前需要48个TPUs。...像围棋这样深度学习,你不能在纸上取得胜利,你必须要实际操作才能知道谁赢了。简而言之,无论一个简单想法是什么,你都不会体会到它到底有多好,除非你去实际运行它。...当你拥有这种机制时,你可以对它最终输出进行评估,它精确度要高得多,而且训练数据也少。AlphaGo Zero案例,没有任何训练数据可以说明训练数据是通过自我对弈产生

    92680

    为什么 Eclipse ,运行本程序却是另外一个程序结果?

    文章目录 前言 一、错误产生场景 1.1、执行一个无误 Java 程序(即产生结果程序) 1.2、执行未出结果 Java 程序 二、错误处理 总结 ---- 前言 你使用 Eclipse 敲代码时候...,有没有遇到过这样一种情况,明明我点击运行本程序结果却是另外一个程序结果?...这是为什么呢?话不多说,我们从实际案例来分析错误原因。...---- 一、错误产生场景 1.1、执行一个无误 Java 程序(即产生结果程序) 首先我们先执行一个 Java 程序SwitchToIfElseWithSwitch如下: package review3...要做一个细心程序员哦! ---- 我是白鹿,一个不懈奋斗程序猿。望本文能对你有所裨益,欢迎大家一键三连!若有其他问题、建议或者补充可以留言文章下方,感谢大家支持!

    2.6K41

    浅谈laravel-admin form数据,提交后,保存前,获取并进行编辑

    一个这样需求: 当商品设置为立即上架时,通过审核就进入上架状态,当设置为保存时,通过审核就进入未上架状态。...所以,需要在保存前根据提交审核状态和设置方式得到商品状态再保存,而通过$form- model()- attribute_name只能获取提交后值,不能更改。...Google之后发现了已经有解决方案:可以修改提交表单逻辑吗 #375 模型添加如下方法: public static function boot() { parent::boot();...static::saving(function ($model) { // 从$model取出数据并进行处理 }); } 以上这篇浅谈laravel-admin form...数据,提交后,保存前,获取并进行编辑就是小编分享给大家全部内容了,希望能给大家一个参考。

    4.2K62

    浅谈laravel-admin form数据,提交后,保存前,获取并进行编辑

    一个这样需求: 当商品设置为立即上架时,通过审核就进入上架状态,当设置为保存时,通过审核就进入未上架状态。...所以,需要在保存前根据提交审核状态和设置方式得到商品状态再保存,而通过$form->model()->attribute_name只能获取提交后值,不能更改。...Google之后发现了已经有解决方案:可以修改提交表单逻辑吗 #375 模/ /型添加如下方法: public static function boot() { parent::boot()...; static::saving(function ($model) { // 从$model取出数据并进行处理 }); } 以上这篇浅谈laravel-admin form数据,提交后,保存前,...获取并进行编辑就是小编分享给大家全部内容了,希望能给大家一个参考,也希望大家多多支持/ /。

    3.6K00

    django2实战5.创建表单及发送邮件测试邮件发送创建表单页面业务逻辑搭建新建分享页面模板详情页添加分享入口结果展示

    继上篇 django2实战4.创建文章列表页和详情页 本篇要实现这样功能:文章详情页增加分享文章入口,点击后跳到分享页面,提交要发送email地址,程序将发送邮件到相应邮箱,邮件内容是文章链接地址...邮件发送 创建表单页面 django内置了生成表单功能,但其默认样式太难看了,我们结合bootstrap对表单样式进行改造 新建 mysite/blog/forms.py from django import...,并对表单提交数据进行验证 业务逻辑搭建 分享页面的由文章详情页跳转而来,且分享是具体某篇文章,所以必须携带文章id 据此设定分享页面的url为:http://127.0.0.1:8000/blog...form, 'sent': sent}) 当http请求是post方式时,post_share接收表单数据并发送邮件...如果你感兴趣,请关注我django2实战文集 如果觉得本文对你有所帮助,点个赞,或者赏杯咖啡钱,你认可对我很重要

    1.5K20

    一个千万级数据库查寻,如何提高查询效率?

    可以num上设置默认值0,确保表num列没有null值,然后这样查询: selectidfromtwherenum=0; 3、并不是所有索引对查询都有效,SQL是根据表数据来进行查询优化,当索引列有大量数据重复时...这是因为引擎处理查询和连接时会逐个比较字符串一个字符,而对于数字型而言只需要比较一次就够了; 7、尽可能使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小...;具有一个以上处理器机器上运行SQL。...并且返回结果集或者数值,这样不仅可以使程序模块化,同时提高响应速度,减少网络流量,并且通过输入参数接受输入,使得应用完成逻辑一致性实现。...因为人们使用SQL时往往会陷入一个误区,即太关注于所得结果是否正确,特别是对数据量不是特别大数据库操作时,是否建立索引和使用索引好坏对程序响应速度并不大,因此程序员书写程序时就忽略了不同实现方法之间可能存在性能差异

    1.6K20

    一个千万级数据库查寻,如何提高查询效率?

    一个千万级数据库查寻,如何提高查询效率? 1、数据库设计方面: A. 对查询进行优化,应尽量避免全表扫描,首先应考虑 where 及 order by 涉及列上建立索引。 B....这是因为引擎处理查询和连接时会逐个比较字符串一个字符,而对于数字型而言只需要比较一次就够了。 G....ENUM 类型是非常快和紧凑实际上,其保存是 TINYINT,但其外表上显示为字符串。这样一来,用这个字段来做一些选项列表变得相当完美。...,并且返回结果集或者数值,这样不仅可以使程序模块化,同时提高响应速度,减少网络流量,并且通过输入参数接受输入,使得应用完成逻辑一致性实现。...因为人们 使用SQL时往往会陷入一个误区,即太关注于所得结果是否正确,特别是对数据量不是特别大数据库操作时,是否建立索引和使用索引好坏对程序响应速度并不大,因此程序员书写程序时就忽略了不同实现方法之间可能存在性能差异

    1.4K30

    Django 模板渲染并行数组

    Django 模板渲染并行数组通常涉及使用模板语言中循环结构来遍历和展示数组每个元素。...每次迭代循环时,变量 item 将代表数组一个元素,并通过 {{ item }} 方式插入到 HTML 。如果 items 是一个包含字典或对象列表,你可以使用点表示法访问它们属性。...1、问题背景使用 Django 渲染模板时,有时需要同时渲染两个数组数据一个数组是需要输出数据,另一个数组是用于删除项表单集。...由于 Django 不支持模板标签中使用布尔运算符,直接将这两个数组打包在一起可能会导致渲染第一个项目和第一个表单。因此,需要一种方法将这些项目打包在一起,以便在同一个 for 循环中渲染它们。...,可以使用以下代码来渲染打包后数组:{% for post, form in post_and_form %}{% endfor %}这样,就可以一个 for 循环中渲染这两个数组数据了。

    5810

    Django(1)初识Django「建议收藏」

    前言 Django是一个开放源代码Web应用框架,由Python写成,最初用于管理劳伦斯出版集团旗下一些以新闻内容为主网站,即CMS(内容管理系统)软件,于2005年7月BSD许可证下发布,这套框架是以比利时吉普赛爵士吉他手...URL设计:开发者可以设计任意URL(网站地址),而且还支持使用正则表达式设计 模板系统:提供可扩展模板语言,模板之间具有可继承性 表单处理:可以生成各种表单模型,而且表单具有有效性检验功能 Cache...,系统扩展性强 Django2新特性 简化URL路由语法:使得Django.urls.path()方法语法更简单。...()现在返回一个列表,包含插入失败键值 视图类:ContextMixin,extra_context属性允许View.as_view()添加上下文 Pagination(分页):增加Paginator.get_page...()`,可以处理各种非法页面参数,防止异常 Templates(模板):提高Engine.get_default()第三方模块用途 Vaildators(验证器):不允许CharField及其子类表单输入为空

    2.8K20

    Django实战-配置后台管理框架Xadmin

    Django网络应用开发5项基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计和Form(表单)使用。...Django是python重量级web框架,写得少,做得多,非常适合后端开发,它很大一个亮点是,自带后台管理模块,但它自带后台管理有点丑,而Xadmin是基于bootstrap开发一套后台管理框架...https://github.com/sshwsfc/xadmin/tree/django2 ② pip 安装 pip install xadmin ?...安装额外插件 pip install django-import-export 三、建立与xadmin相关表,将表添加到数据库 python manage.py makemigrations python...五、设置中文 settings.py 文件修改 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N

    79820

    9.1.MySQL实践@一个千万级数据库查寻,如何提高查询效率

    这是因为引擎处理查询和连接时会逐个比较字符串一个字符,而对于数字型而言只需要比较一次就够了。         g....;具有一个以上处理器机器上运行SQL。...2)调整数据库     若对该表查询频率比较高,则建立索引;建立索引时,想尽对该表所有查询搜索操作, 按照where选择条件建立索引,尽量为整型键建立为有且只有一个簇集索引,数据物理上按顺序在数据页上...,并且返回结果集或者数值,这样不仅可以使程序模块化,同时提高响应速度,减少网络流量,并且通过输入参数接受输入,使得应用完成逻辑一致性实现。...因为人们使用SQL时往往会陷入一个误区,即太关注于所得结果是否正确,特别是对数据量不是特别大数据库操作时,是否建立索引和使用索引好坏对程序响应速度并不大,因此程序员书写程序时就忽略了不同实现方法之间可能存在性能差异

    1.8K40
    领券