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

Django2.x-使用ModelForm在表单中创建一个包含无限制项的列表

Django是一种基于Python语言的Web应用开发框架,提供了强大的数据库操作和URL路由等功能。Django的版本号以主版本号和次版本号两部分组成,2.x代表的是Django的第2个主版本。

ModelForm是Django框架中的一个表单类,它可以自动根据模型(Model)生成表单,并且可以对表单的字段进行验证和数据处理。在创建一个包含无限制项的列表时,可以使用ModelForm来简化表单的创建和处理流程。

下面是使用ModelForm在表单中创建一个包含无限制项的列表的示例代码和解释:

  1. 首先,创建一个模型(Model),定义列表的项:
代码语言:txt
复制
from django.db import models

class Item(models.Model):
    name = models.CharField(max_length=100)
    quantity = models.IntegerField()
  1. 然后,创建一个模型表单(ModelForm),用于生成包含无限制项的列表的表单:
代码语言:txt
复制
from django import forms
from .models import Item

class ItemForm(forms.ModelForm):
    class Meta:
        model = Item
        fields = ['name', 'quantity']

在这个示例中,我们使用了Django内置的ModelForm类来定义一个表单类ItemForm,并指定其对应的模型为Item,并设置表单中包含的字段为name和quantity。

  1. 接下来,在视图函数(View)中处理表单的提交和展示:
代码语言:txt
复制
from django.shortcuts import render, redirect
from .forms import ItemForm

def item_list(request):
    if request.method == 'POST':
        form = ItemForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('item_list')
    else:
        form = ItemForm()
    items = Item.objects.all()
    return render(request, 'item_list.html', {'form': form, 'items': items})

在这个示例中,我们定义了一个视图函数item_list来处理表单的提交和展示。如果请求方法是POST,则根据提交的数据创建表单实例,并进行验证,如果验证通过则保存表单数据,并重定向到item_list页面;如果请求方法是GET,则创建一个空的表单实例。最后,获取所有的Item对象,并将表单实例和Item对象传递给模板进行展示。

  1. 最后,在模板(Template)中展示表单和列表:
代码语言:txt
复制
<!-- item_list.html -->
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">保存</button>
</form>

<ul>
  {% for item in items %}
    <li>{{ item.name }} - {{ item.quantity }}</li>
  {% empty %}
    <li>列表为空</li>
  {% endfor %}
</ul>

在模板中,我们使用form.as_p将表单以p标签包裹的形式展示出来,并添加一个提交按钮。使用{% for item in items %}和{% empty %}来遍历和展示Item对象列表。

以上是使用ModelForm在表单中创建一个包含无限制项的列表的示例代码和解释。这个示例中展示了如何定义模型、创建模型表单、处理表单的提交和展示表单数据。如果想了解更多关于Django的内容,可以访问腾讯云的Django产品介绍页面:Django产品介绍

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

相关·内容

Django学习之八:forms组件【对

下面就来使用属性和方法吧: field.label 是label值,不包括label标签 field.label_tag() 就是一个返回label标签方法,包含了label值;渲染标签是指定参数...这个拿到一个错误集合(或者说错误列表),通过访问改错误列表才能拿到错误。其它拿错误方式也是一样。 forms对象template渲染是不会有标签。...form.errors 是一个字典(区别对比field.errors),包含所有字段错误,key就是字段名,对应value是一个错误列表。...form表单可以使用input-checkbox 和 select-option 及 input-radio 来实现多值或者提供选择给用户展示。...**主要利用是querysetmodel对象pk和对象__str__输出。**这个很重要,开始使用时,要提供一个queryset参数。

2.2K30
  • django 关于 ModelForm

    ModelForm:大家表单时候,会发现表单Field和模型Field基本上是一模一样,而且表单需要验证数据,也就是我们模型需要保存。...fields = "__all__"MyForm是继承自forms.ModelForm,然后表单定义了一个Meta类,Meta类中指定了model=Article,以及fields="__all_...如果只想针对其中几个字段进行验证,那么可以给fields指定一个列表,将需要字段写进去。...exclude = ['category']自定义错误消息:使用ModelForm,因为字段都不是表单定义,而是模型定义,因此一些错误消息无法字段定义。...比如表单上验证字段没有包含模型中所有的字段,这时候就可以先创建对象,再根据填充其他字段,把所有字段值都补充完成后,再保存到数据库

    79860

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

    接下来,我们开始定义一个显示每个条目的项目列表(见2),并像前面显示所有主题一样遍历 条目(见3)。 每个项目列表项都将列出两信息:条目的时间戳和完整文本。...Django创建表单最简单方式是使用ModelForm,它根据我们第18章定义模型 信息自动创建表单。...最简单ModelForm版本只包含一个内嵌Meta类,它告诉Django根据哪个模型创建表单,以 及表单包含哪些字段。...处,我们根据模型Topic创建一个表单,该表单包含字段text (见)。处代码让Django不要为字段text生成标签。 2....我们使用用户输 入数据(它们存储request.POST创建一个TopicForm实例(见3),这样对象form将包含 用户提交信息。

    15910

    django admin 添加自定义链接方式

    背景 最近做项目开发出现一个需求,就是前端会发来用户对某一内容报错,报错信息包含出错内容id,为了方便管理,需要实现点击这个id直接转达相应内容详情页面。...效果展示 解决 首先在django admin列表查看数据id所代表链接 ? 使用浏览器检查元素功能查看点击该id所跳转链接 ? 现在我们知道点击admin页面跳转链接格式了。...models.py定义一个ModelForm class FeedbackModelForm(ModelForm): error_content_id = forms.CharField(label...将上述定义模型表单添加到模型管理器 class FeedbackModelAdmin(admin.ModelAdmin): form=FeedbackModelForm ………....总结 使用这种方法可以不用创建一个模型然后重写它changelist_view函数实现自定义链接,可以给admin界面的文字,图片等添加链接(通过自定义widget就可实现),并且链接样式可以自己定义

    1.3K20

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

    2.Django中表单使用流程 讲解Django表单具体每部分细节之前。我们首先先来看下整体使用流程。...3. django表单 Modelform 大家表单时候,会发现表单Field和模型Field基本上是一模一样,而且表单需要验证数据,也就是我们模型需要保存。...fields = "__all__" MyForm是继承自forms.ModelForm,然后表单定义了一个Meta类,Meta类中指定了model=Article,以及fields="**all...exclude = ['category'] 3.1 自定义错误消息 使用ModelForm,因为字段都不是表单定义,而是模型定义,因此一些错误消息无法字段定义。...比如表单上验证字段没有包含模型中所有的字段,这时候就可以先创建对象,再根据填充其他字段,把所有字段值都补充完成后,再保存到数据库

    3.2K40

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

    3处,我们显示表单,从中可知Django使得完 成显示表单等任务有多简单:我们只需包含模板变量{{ form.as_p }},就可让Django自动创建显 示表单所需全部字段。...修饰符as_p让Django以段落格式渲染所有表单元素,这是一种整洁地显 示表单简单方式。 Django不会为表单创建提交按钮,因此我们4处定义了一个这样按钮。 6....新类EntryForm继承了forms.ModelForm,它包含Meta类指出了表单基于模型以及要在表单包含哪些字段。这里也 给字段'text'指定了一个空标签(见1)。...如果请求方法为POST,我们就对数据进行处理:创建一个EntryForm 实例,使用request对象POST数据来填充它(见4);再检查表单是否有效,如果有效,就设 置条目对象属性topic,再将条目对象保存到数据库...7处,我们将用户重定向到显示相关主题页面。调用reverse()时,需要提供两个实参: 要根据它来生成URLURL模式名称;列表args,其中包含包含在URL所有实参。

    13410

    Django表单集合----Formset

    Formset(表单集)是多个表单集合。FormsetWeb开发应用很普遍,它可以让用户一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息。...例如, extra=2 , max_num=2 并且formset有一个 initial 初始化,则会显示一张初始化表单和一张空白表单。...2、如果初始数据数量超过 max_num ,那么 max_num 值会被无视,所有初始数据表单都会显示,并且也不会有额外表单显示。...例如,假设 extra=3 , max_num=1 并且formset有两个初始化,那么只会显示两张有初始化数据表单。...三、如何使用modelformset_factory Formset也可以直接由模型model创建,这时你需要使用modelformset_factory。你可以指定需要显示字段和表单数量。

    1.2K30

    Django源码学习-18-ModelForm

    Django网络应用开发5基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计和Form(表单)使用。...使用 Django 开发 Web 程序,阶段一,手动对表单进行增、删、改、查,手动把ORM操作获取数据渲染到模板;阶段二,Form 类,自动生成标签(input、select),并对用户输入数据做规则验证...ModelForm 定义: form与model终极结合,会根据model字段转换成对应form字段,并且能生成标签等操作。 ? ModelForm写法: ?......} } ModelForm 验证: 与普通Form表单验证类型类似,ModelForm表单验证调用is_valid() 或访问errors 属性时隐式调用。...如果不重写具体字段并设置validators属性的话,ModelForm是按照模型字段validators来校验。 ?

    71820

    37.Django1.11.6文档

    你可以自定义这个列表,比如,如果你应用不需要默认权限任何一,可以把它设置成空列表。 模型被migrate命令创建之前,这个属性必须被指定,以防一些遗漏属性被创建。...由于绝大多数引擎都是从文件加载模板,所以每种模板引擎都包含通用设置: DIRS 定义了一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件。...考虑一下Django Admin 站点,不同类型大量数据需要在一个表单准备好、渲染成HTML、使用一个方便界面编辑、返回给服务器、验证并清除,然后保存或者向后继续处理。...正如我们看见, formset.errors 是一个列表, 他包含错误信息正好与表单集内表单一一对应 错误检查会在两个表单中分别执行,被预见错误出现错误列表第二 就像使用正常Form一样,...它接受请求,应用当前过滤器查询集以及用户提供搜索。 它返回一个包含被修改以实现搜索查询集元组,以及一个指示结果是否可能包含重复布尔值。

    24.3K80

    djangoModelForm表单组合解决方案

    所以,基本表单功能看BaseForm已经足够了。 2、从模型创建表单 django对于MVCC与M间映射是非常体贴,集中体现Model模型(比如模型权限与用户认证)。...告诉django需要在表单创建哪些字段。...比如CreateView就会由django自动把页面上POST出form数据解析到model生成表单(或者form_calss指定ModelForm类型表单),同时调用表单save方法将数据添加到模型对应数据库表...所以,从模型创建表单ModelForm,配合上通用视图后,威力巨大!! 4、多个ModelForm一个form里提交 终于可以回到本文主题了。...CreateView默认是处理一个Model模型、一个ModelForm表单,然而,很多时候为了解耦,会把一张表拆成多张表,通过id关联在一起。

    3.4K20

    Django搭建博客(八):进阶:form与 model配合使用

    一、使用情景 我们后台管理页面需要一个表单来提交和修改博客,按照上一篇讲,我们可以这么使用: 先定义一个 Form类,包括标题、标签和内容三个字段: class ArticleForm(forms.Form...form,提交表单时,我们还需要将各个字段赋值给 model对应字段。...修改文章页面我们需要先将表格填充好,再渲染页面。 这时我们表单还只有几个字段,工作量并不大,但是如果表单字段增加到十几个,工作量就有点大了。...幸好 Django为我们提供了 ModelForm 类,可以根据已存在 Model类来自动地创建 Form 类。...二、使用 ModelForm 使用 ModelForm 很简单,我们只需要创建一个元类并给对应属性赋值即可,如下: class ArticleForm(forms.ModelForm): class

    60930

    Django之model模型对象验证

    使用ModelForm时,is_valid() 将为表单所有字段执行这些验证。...可选exclude 参数用来提供一个可以从验证和清除中排除字段名称列表ModelForm 使用这个参数来排除表单没有出现字段,使它们不需要验证,因为用户无法修正这些字段错误。...在上面的示例,Model.clean() 引发ValidationError 异常通过一个字符串实例化,所以它将被保存在一个特殊错误字典键NON_FIELD_ERRORS。...,可以使用一个字典实例化ValidationError,其中字典键为字段名称。...可选exclude 参数允许你提供一个字段名称列表来从验证中排除。如果有字段验证失败,将引发一个 ValidationError。

    1.4K30

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

    [0]或kwargs['object_id'] 而不需要再记住 URLconf名称了 ##当然 Django1.6,完全可以不用在URLconf中使用 ?...模板输出context变量时,会隐式调用unicode方法。如果试图打印没有__unicode__方法对象,模板是不可见。...(20)保存 ModelForm一个save()方法,可以将信息保存为数据库里一条记录,然后返回Model对象结果。...当有关联对象时,Django会给表单添加一个额外方法 save_m2m (21)区别于Model ModelFormMeta嵌套类允许你定义两个可选属性,fields和exclude...# 获取文章详细信息,包含一个CommentForm表单 def detail(req, article_id): if req.method == 'POST': form =

    1.8K20

    Form和ModelForm组件

    Form介绍  我们之前HTML页面利用form表单向后端提交数据时,都会写一些获取用户输入标签并且用form标签把它们包起来。...举个例子,你也许会有个Book 模型,并且你还想创建一个form表单用来添加和编辑书籍信息到这个模型。 在这种情况下,form表单定义字段将是冗余,因为我们已经模型定义了那些字段。...基于这个原因,Django 提供一个辅助类来让我们可以从Django 模型创建Form,这就是ModelFormmodelForm定义 form与model终极结合。...,ModelForm表单验证调用is_valid() 或访问errors 属性时隐式调用。...这个方法根据表单绑定数据创建并保存数据库对象。 ModelForm子类可以接受现有的模型实例作为关键字参数instance;如果提供此功能,则save()将更新该实例。

    5K10

    Django中使用下拉列表过滤HTML表格数据

    Django,你可以使用下拉列表(即选择框)来过滤HTML表格数据。这通常涉及两个主要步骤:创建过滤表单和处理过滤逻辑。创建过滤表单首先,你需要创建一个表单,用于接收用户选择过滤条件。...这个表单可以使用Djangoforms.Form类来定义,或者使用DjangoModelForm,具体取决于你是直接过滤模型数据还是对查询集进行过滤。...具体来说,我们可以通过以下步骤实现下拉列表动态变化: HTML 页面添加一个下拉列表,用于选择年份。 HTML 页面添加一个下拉列表,用于选择月份。... HTML 页面添加一个下拉列表,用于选择供应商类型。 JavaScript 代码,添加一个事件监听器,监听下拉列表选项改变事件。...当下拉列表选项改变时,使用 Ajax 向服务器发送一个请求,服务器根据请求参数返回过滤后数据。 JavaScript 代码,将服务器返回数据更新到 HTML 表格

    10610

    Django 构建模板form表单两种方法

    "text" name="your_name" value="{{ current_name }}" <input type="submit" value="OK" </form 下面说说我们使用...django是如何在模板文件中生成form表单: 1、自定义显示字段: 假如我们要在模板中生成一张含有username和content表单 app下新建forms.py(/users/forms.py...content = forms.CharField(label='留言', max_length=100) 视图文件引用上边表单字段并传递给模板(users/view.py) from apps.users.forms...= Lesson fields = ['add_time', 'name', 'learn_times'] #要显示字段 视图文件引用上边表单字段并传递给模板(users/view.py) from...所有表单类都作为 django.forms.Form 或者 django.forms.ModelForm 子类来创建。您可以把 ModelForm 想象成 Form 子类。

    1.6K20
    领券