首页 > 解决方案 > Django 动态添加字段而不创建新的模型实例

问题描述

我正在尝试创建一个允许某人输入多个电话号码的表单。我想让单击一个按钮向表单添加一个附加字段成为可能,但我不太确定如何做到这一点。

我查看了FormSets 但我不想每次有人添加新电话号码时都创建一个新模型实例。

提前致谢

标签: pythondjangodjango-formsmodelformformset

解决方案


一种方法是,您可以考虑使用ArrayFieldJSONField作为电话号码。如果您希望始终能够轻松引用数字,后者可能会更有用,例如

{'primary_no': '+123232323'}

然后对于前端,您可以使用带有 Javascript 的按钮来“克隆”input元素(或者更好地创建一个具有相同类名的新元素)并将其附加到电话号码包装 div 上click。但是您需要注意使用与checkbox元素相同的字段名称,例如

<input type="text" name="phone_number[]" />

这将使这些字段的值在数组中发送request.POST.getlist('phone_number[]'),然后您可以循环并验证。我在这里省略了细节,但这应该会给你一个想法。


推荐阅读