这些模板集正好展示了我想要的opposite种行为.

我的视图设置如下:

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动态添加空白表单时,所有这些额外的表单都是必需的,这是我不想要的.

从文档中:

表单集足够智能,可以忽略未更改的额外表单.

这是第一个表单显示的行为(不是我想要的),而不是额外的表单显示的行为(我确实想要的).

是否有一些属性可以更改为至少需要one个表单?

推荐答案

找到更好的解决方案:

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)

really分不知道为什么这不是一开始的 Select .但是,无所谓了.我一生中只花了几个小时就明白了.

这将使所有表格都成为必需的.通过将self.forms[0].empty_permitted设置为False,您可以只创建所需的第一个参数.

Django相关问答推荐

DRF中是否有有效的更新有序数据的算法?

如何创建为模型创建信号的Djangodecorator ?

Django中的Sync_to_Async修饰器、异步视图

Django中每个类型/代理的最新行

有什么方法可以自动设置 Debug True Django application

Pymongo:搜索文档时忽略空输入值

- 不支持的操作数类型:DateField和DateField

如何使用 matplotlib 在绘图的角落插入小图像?

如何访问 Django Rest Framework 上的自定义 HTTP 请求标头?

如何在 django 中生成 url

Python 和 Django OperationalError (2006, 'MySQL server has gone away')

PyMongo vs MongoEngine for Django

获取 Django 表单中的错误列表

Django 不调用模型清理方法

在 Django 中的字段中添加额外的约束

基于 User-Agent 更改 Django 模板

在 django 中获取空查询集的类名

Django 用户配置文件

django.urls.path中name参数的作用是什么?

APIView 类和视图集类之间的区别?