首页
学习
活动
专区
圈层
工具
发布

Django中使用ModelForm保存数据

相对来说,使用ModelForm保存数据在Django中算是比较简单的。...主要原因是ModelForm是建立在Django的模型(Model)之上的,它可以自动根据模型的定义生成表单,包括字段和验证规则。这样可以大大简化开发人员处理表单数据的工作。...使用ModelForm保存数据的流程也相对清晰明了:定义模型、创建ModelForm、在视图中处理表单提交。...你仍然可以在表单中接受一个 ID 作为文本输入,但是你需要检索实际的 course 实例并分配该值。...当用户提交表单时,视图会验证数据,如果数据有效,则保存到数据库中。其实上述所讲述的内容也并非过于复杂,只要了解其特性,并且根据自身项目做出调整,这样才能发挥出应有的作用。

43410

django中ModelForm多表单组合的解决方案

书归正传,web服务允许用户输入,基本上要靠表单。...我们需要完成的工作非常少,可以没有相似的重复代码。有些复杂的场景,会要求一个表单的内容存放到多张表里,本文将通过4个部分,阐述它的实现方法。...我们重点关注表单的BaseForm类,它实现了基本的逻辑。截选了一小段对接下来的陈述有意义的代码,做一个简单的注释。...这里仅以CreateView为例说明,因为它相对最复杂,接下来的多ModelForm的提交也是在CreateView上进行的。...比如CreateView就会由django自动的把页面上POST出的form数据解析到model生成的表单(或者form_calss指定的ModelForm类型表单),同时调用表单的save方法将数据添加到模型对应的数据库表中

4.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django使用普通表单、Form、以及modelForm操作数据库方式总结

    Django使用普通表单、Form、以及modelForm操作数据库主要应用于增删该查的情景下,流程通用如下,只是实现方式不一样: 进入填写表单页面; 在表单页面填写信息,并提交...; 表单数据验证 验证成功,和数据库进行交互(增删改查); 验证成功,页面提示表单填写失败; 一、Django使用普通表单操作数据库 1、html代码: <form...() return HttpResponseRedirect('/addok/') 二、Django使用自有插件Form表单操作数据库 和方法一的使用普通表单相比,使用django...的Form表单更方便快捷地生成前端form表单以及对字段的校验规则; from django.shortcuts import render, HttpResponse, redirect from...使用插件modelForm表单操作数据库 和方法二的使用表单Form相比,modelForm具有Form中所有的验证钩子,使用django的modelForm表单不需要重新定义Form,比较方便。

    2.9K30

    Django Form 实现多层(嵌套)模型表单

    在 Django 中,可以通过使用 ModelForm 和 InlineFormSet 来实现多层(嵌套)模型表单。这样可以在一个表单中同时编辑主模型及其相关的子模型。...需要创建涉及多个模型的表单,例如“测验-问题-答案”模型,并且每个测验包含多个问题,每个问题有多个答案。2、解决方案方法一使用 Django 的 ModelForm 来创建各个模型的表单。...手动将这些表单组合成一个多层表单。需要考虑保存数据的顺序,即先保存最底层的模型,然后是中间层的模型,最后是顶层的模型。...方法二使用 Django 的 InlineFormSet 和 ModelForm 来创建多层表单。InlineFormSet 可以用来创建嵌套的表单集,其中每个表单集对应一个模型。...代码示例方法一:手动组合表单from django.forms import ModelForm, Form​class QuizForm(ModelForm): class Meta:

    45510

    关于“Python”的核心知识点整理大全55

    用于添加主题的表单 让用户输入并提交信息的页面都是表单,那怕它看起来不像表单。用户输入信息时,我们需 要进行验证,确认提供的信息是正确的数据类型,且不是恶意的信息,如中断服务器的代码。...在Django中,创建表单的最简单方式是使用ModelForm,它根据我们在第18章定义的模型中 的信息自动创建表单。...最简单的ModelForm版本只包含一个内嵌的Meta类,它告诉Django根据哪个模型创建表单,以 及在表单中包含哪些字段。...还有一些其他类型的请求,但这个项目没有使用。 函数new_topic()将请求对象作为参数。用户初次请求该网页时,其浏览器将发送GET请求; 用户填写并提交表单时,其浏览器将发送POST请求。...由于实例化TopicForm时我们没有指定任何实参,Django将创建一个可供用户 填写的空表单。 如果请求方法为POST,将执行else代码块,对提交的表单数据进行处理。

    1.2K10

    Django学习之八:forms组件【对

    目录 Django forms组件 bound and unbound form instance forms渲染有关 隐藏一个字段,不渲染它 form 校验 form类 ModelForm 利用...没校验通过的form_obj可以用于渲染,将错误信息和验证过的信息都渲染到form表单中,不会出现form表单没有校验通过,就将部分校验通过的数据也清空掉,会保留校验通过的数据,只清空没有通过的字段的数据...绑定到modelform数据有两种方式,一种是普通方式,一种是绑定一个相同model类的实例对象(这种方式多用于修改视图的表单)。...如form(request.POST, instance=model_obj) 这样实例化modelform表单对象才行。...还有一种情况,如果有一个manytomany字段,创建对象,建立关系可能需要先构建关联表中的数据后,才能保存。这时候可以调用modelform.save_m2m()方法保存对象并建立关系数据到中间表。

    2.6K30

    Django Form的使用

    Django 中提供了两种 Form 表单类型,一种是 forms.Form ,另外一种是 forms.ModelForm 。...对于 Django 中的 Form 表单的用法,我们只需要了解以下几点: 它是一个定义一个 Form 类,基类是 django.forms.Forms 或者 django.forms.ModelForm...ModelForm 比较简单,它适用于:当你创建的表单内容与某个 Model 内容很相似的情况。如上面文档介绍的一样 在 Form 类中,clean 方法可以在做表单验证,它是一个总的验证方法。...但问题来了,新建还行,但当我们使用编辑的时候,会发现,没办法做修改,即当代码走到 form.is_valid() 时,它始终做了 dict 的初始化,它不再会接受你新输入的值。...所以表单初始化的时候,也没有办法进行赋值。 解决思路如下: 在表单中新开一个字段,用来存储上传后的图片链接,当图片未上传时,整个 div 隐藏,当图片有值时,整个 div 展示。

    2.6K20

    【玩转全栈】----基于ModelForm完成用户管理页面

    下面介绍一种更加便捷的表单方法——ModelForm 在Django开发中,ModelForm 是 Django 提供的一个用于简化表单处理的工具,它能通过模型(Model)自动生成表单...ModelForm 是 Django 中的一个强大功能,能够帮助开发者减少重复的代码,特别是在需要处理与模型关联的表单时。...验证机制 自动应用模型中的验证规则 需要手动编写字段的验证逻辑 数据保存 自动保存到数据库 需要手动处理数据保存逻辑 创建表单字段 自动生成字段 需要手动定义表单字段 ModelForm 是由传统Form...HTML表单字段 需要手动创建表单字段 ModelForm 主要用于那些与模型直接关联的表单,简化了表单字段的定义和数据的保存过程。...缺点是对于那些没有直接模型支持的表单,或者需要更复杂逻辑的表单,ModelForm 可能不如手动定义的传统 Form 灵活。

    24900

    Django学习-第十三讲(下):表单(一)forms.form、forms.modelform

    1. html表单和django中的表单的区别 HTML中的表单: 单纯从前端的html来说,表单是用来提交数据给服务器的,不管后台的服务器用的是Django还是PHP语言还是其他语言。...Django中的表单 Django中的表单丰富了传统的HTML语言中的表单。在Django中的表单,主要做以下两件事 渲染表单模板。 表单验证数据是否合法。...3. django表单的 Modelform 大家在写表单的时候,会发现表单中的Field和模型中的Field基本上是一模一样的,而且表单中需要验证的数据,也就是我们模型中需要保存的。..., } } 3.2 save方法 ModelForm还有save方法,可以在验证完成后直接调用save方法,就可以将这个数据保存到数据库中了 form = MyForm...比如表单上验证的字段没有包含模型中所有的字段,这时候就可以先创建对象,再根据填充其他字段,把所有字段的值都补充完成后,再保存到数据库中。

    3.7K40

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

    接受四个关键字 : select , where , tables , params (11)利用Django没有提供的SQL特性 !!!!!...Django提供了forms库把框架里的三个主要组件联系在一起:模型定义的数据库字段,模板里显示的HTML表单标签,还有检验用户输入和显示错误信息的能力。...(20)保存 ModelForm 有一个save()方法,可以将信息保存为数据库里的一条记录,然后返回Model对象结果。...当有关联对象时,Django会给表单添加一个额外的方法 save_m2m (21)区别于Model ModelForm的Meta嵌套类允许你定义两个可选属性,fields和exclude...(null=True) (22)Form实例初始化 form = PersonForm(initial={'name': '请输入姓名'}) (23)Form表单验证 唉

    2.1K20

    django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单

    使用基于类的视图处理表单 表单的处理通常有3 个步骤: 初始的的GET (空白或预填充的表单) 带有非法数据的POST(通常重新显示表单和错误信息) 带有合法数据的POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复的样本代码...模型表单提供一个form_valid() 的实现,它自动保存模型。如果你有特殊的需求,可以覆盖它;参见下面的例子。...注 当指定一个自定义的表单类时,你必须指定模型,即使form_class 可能是一个ModelForm。...除非你用另外一种方式定义表单类,该属性是必须的,如果没有将引发一个ImproperlyConfigured 异常。...AJAX 示例 下面是一个简单的实例,展示你可以如何实现一个表单,使它可以同时为AJAX 请求和‘普通的’表单POST 工作: from django.http import JsonResponse

    2.5K20

    12.Django基础十之Form和ModelForm组件

    一 Form介绍   我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。   ...七 ModelForm   通常在Django项目中,我们编写的大部分都是与Django 的模型紧密映射的表单。...save()方法     每个ModelForm还具有一个save()方法。 这个方法根据表单绑定的数据创建并保存数据库对象。...,它完成的就是上面三句话做的事情,并且还有就是如果你验证的数据比你后端数据表中的字段多,那么他自会自动剔除多余的不需要保存的字段,比如那个重复确认密码就不要保存 return redirect...action的url用的,因为它需要一个参数来识别是更新的哪条记录 else: form = BookForm(request.POST,instance=book_obj)

    3.7K20

    评论

    Django 的表单类必须继承自 forms.Form 类或者 forms.ModelForm 类。...如果表单对应有一个数据库模型(例如这里的评论表单对应着评论模型),那么使用 ModelForm 类会简单很多,这是 Django 为我们提供的方便。...回想一下,我们使用数据库保存我们创建的博客文章,但是我们从头到尾没有写过任何和数据库有关的代码(要知道数据库自身也有一门数据库语言),这是因为 Django 的 ORM 系统内部帮我们做了一些事情。...Django 的表单和这个思想类似,正常的前端表单代码应该是和本文开头所提及的那样,但是我们目前并没有写这些代码,而是写了一个 CommentForm 这个 Python 类。...Comment 模型类的实例,但还不保存评论数据到数据库。

    3.7K60

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

    在本章中,你将创建一些表单,让用户能够添加主题和条目,以及编辑既有的条目。你还将学习Django如何防范对基于表单的网页发起的常见攻击,这让你无需花太多时间考虑确保应用程序安全的问题。...1.1 用于添加主题的表单 让用户输入并提交信息的页面都是表单,那怕它看起来不像表单。用户输入信息时,我们需要进行验证,确认提供的信息是正确的数据类型,且不是恶意的信息,如中断服务器的代码。...然后,我们再对这些有效信息进行处理,并将其保存到数据库的合适地方。这些工作很多都是由Django自动完成的。...在Django中,创建表单的最简单方式是使用ModelForm,它根据前面的模型中的信息自动创建表单。...='POST': #未提交数据:创建一个新表单 form = TopicForm() else : #POST提交的数据,对数据进行处理 form = TopicForm(request.POST

    1.4K60

    关于“Python”的核心知识点整理大全56

    用于添加新条目的表单 我们需要创建一个与模型Entry相关联的表单,但这个表单的定制程度比TopicForm要高些: forms.py from django import forms from...新类EntryForm继承了forms.ModelForm,它包含的Meta类指出了表单基于的模型以及要在表单中包含哪些字段。这里也 给字段'text'指定了一个空标签(见1)。...通过让 Django使用forms.Textarea,我们定制了字段'text'的输入小部件,将文本区域的宽度设置为80 列,而不是默认的40列。...如果请求方法为POST,我们就对数据进行处理:创建一个EntryForm 实例,使用request对象中的POST数据来填充它(见4);再检查表单是否有效,如果有效,就设 置条目对象的属性topic,再将条目对象保存到数据库...该页面收到POST请求(条目文本经过修订)时,它将修改后的文本保存到数据库中: views.py from django.shortcuts import render --snip-- from

    90210
    领券