当前位置: 首页 > 面试题库 >

Django表单集:首先需要吗?

柴亦
2023-03-14
问题内容

这些表单集表现出与我想要的相反的行为。

我的视图设置如下:

def post(request): # TODO: handle vehicle formset
    VehicleFormSetFactory = formset_factory(VehicleForm, extra=1)
    if request.POST:
        vehicles_formset = VehicleFormSetFactory(request.POST)
    else:
        vehicles_formset = VehicleFormSetFactory()

我的模板如下所示:

    <div id="vehicle_forms">
        {{ vehicles_formset.management_form }}
        {% for form in vehicles_formset.forms %}
            <h4>Vehicle {{forloop.counter}}</h4>
            <table>
                {% include "form.html" %}
            </table>
        {% endfor %}
    </div>

这样,像我想要的那样,它最初仅生成1种形式。但是我想要一种表格!

当我使用JavaScript动态添加空白表单时,vehicles_formset.empty_form所有这些多余的表单都是必需的,而这是我所不希望的。

从文档:

表单集足够聪明,可以忽略未更改的其他表单。

这是第一种形式展示的行为(不是我想要的),而不是其他形式展示的行为(我想要的)。

我是否可以更改某些属性以至少要求填写一种表格?


问题答案:

找到了更好的解决方案:

class RequiredFormSet(BaseFormSet):
    def __init__(self, *args, **kwargs):
        super(RequiredFormSet, self).__init__(*args, **kwargs)
        for form in self.forms:
            form.empty_permitted = False

然后像这样创建表单集:

MyFormSet = formset_factory(MyForm, formset=RequiredFormSet)

我真的不知道为什么这不是一个开始的选择……但是,无论如何。我一生只花了几个小时就弄明白了。

这将形成所需的所有表格。你可以通过设置self.forms[0].empty_permitted为来制作所需的第一个False



 类似资料:
  • 初次见面,请多多关照。我是生在博多,成长在Git社区的「猴子老师」。今天我们要来一起学习版本管理系统「Git」哦。 要把文档还原到编辑前的状态,大家都是怎么做的呢? 最简单的方法就是先备份编辑前的文档。使用这个方法时,我们通常都会在备份的文档名或目录名上添加编辑的日期。但是,每次编辑文档都要事先复制,这样非常麻烦,也很容易出错。 再加上,如果像上图那样毫无命名规则的话,就无法区分哪一个文档是最新的

  • 问题内容: 首先,我认为值得一提,我知道有很多类似的问题,但是没有一个对我有用。 我是Python,html和网络抓取工具的新手。我正在尝试从需要先登录的网站上抓取用户信息。在我的测试中,我以来自github的scraper我的电子邮件设置为例。主页是“ https://github.com/login ”,目标页面是“ https://github.com/settings/emails ” 这

  • 我们最后一件关于我们的网站的事情就是创建一个漂亮的方式来增加和编辑博客文章。 Django的管理是很酷,但是它很难去自定义,变得更漂亮。 通过forms,我们可以拥有对我们界面绝对的权利—我们能够做几乎我们能想象到的所有事情! Django表单的一个好处就是我们既可以从零开始自定义,也可以创建ModelForm,它将表单的结果保存到模型里。 这正是我们想做的:我们将为我们自己的Post模型创建一个

  • HTML表单是网站交互性的经典方式。 本章将介绍如何用Django对用户提交的表单数据进行处理。 HTTP 请求 HTTP协议以"请求-回复"的方式工作。客户发送请求时,可以在请求中附加数据。服务器通过解析请求,就可以获得客户传来的数据,并根据URL来提供特定的服务。 GET 方法 我们在之前的项目中创建一个 search.py 文件,用于接收用户的请求: /HelloWorld/HelloWor

  • 问题内容: 我想使用Ajax自动将新表单添加到Django表单集中,以便当用户单击“添加”按钮时,它将运行JavaScript,该JavaScript将新表单(属于表单集的一部分)添加到页面中。 问题答案: 这就是我使用jQuery的方式: 我的模板: 在一个javascript文件中: 它能做什么: 接受作为第一个参数,的作为第二个参数。什么是应该做的是把它传递它应该复制。在这种情况下,我将其传

  • 问题内容: 我需要从HTML页面执行以下活动: 用户输入电子邮件和密码进行注册 用户单击时将表格发送到控制器 Control使用AJAX创建到RESTful Server的JSON请求,服务器进行相应的响应。 根据服务器的响应,用户应获得警报窗口,并在“提交”下方的当前页面()上显示一条消息。如果是“成功-已注册”或“失败-无法注册”。 但是,目前它的工作方式如下:1),2),3)正常工作。 用户