【发布时间】:2012-03-01 01:13:41
【问题描述】:
我有一个模型表单,我需要在其中存储未知数量的助手和一个东西。名称可以在保存时序列化,这不是问题。它能够在提交时清理和验证它们。
表格的样子;
class ThingForm(forms.ModelForm):
"""
Form for the Thing
"""
owner = forms.CharField()
helpers = forms.CharField()
class Meta:
model = Thing
def save(self, *args, **kwargs):
"""
Serialize helpers to JSON.
"""
...
并且模型使用 JSONField 来存储序列化的助手。
class Thing(models.Model):
owner = models.CharField()
helpers = JSONField()
我让 JavaScript 根据需要使用相同的输入名称添加多个帮助器:
<input name="helpers" value="Fred" />
<input name="helpers" value="Joe" />
返回一个帮助者的元组。 问题是如果表单无效 - 这些名称将会丢失并且清理工作不起作用。
我的第一个想法是添加到表单的构造函数中:
def __init__(self, *args, **kwargs):
super(ThingForm, self).__init__(*args, **kwargs)
try:
helpers = args[0].pop('helpers')
for name in helpers:
# Add a charfield, or something?
except:
pass
但我并没有真正到达任何地方......
【问题讨论】:
标签: javascript django django-forms