似乎如果给 ModelForm 一个实例,它会忽略您提供的任何值initial
,而是将其设置为实例的值——即使该实例是空模型记录。
有没有办法创建一个带有实例的表单并设置初始数据?
我需要它,因为我正在保存相关记录,除非在创建时为 ModelForm 提供了一个实例,否则它们似乎无法正确保存。
我敢肯定,这个问题的答案很简单,我只是遗漏了一些明显的东西。
以下是相关代码:
在视图中:
form = form_class(person=person, conference=conference, initial=initial, instance=registration)
form_class 在哪里RegistrationForm
,然后在注册表单中:
class RegisterForm(forms.ModelForm):
... fields here ...
def __init__(self, *args, **kwargs):
... other code ...
self.person = kwargs.pop('person')
super(RegisterForm, self).__init__(*args, **kwargs)
for key, in self.fields.keys():
if hasattr(self.person, key):
self.fields[k].initial = getattr(self.person, key)
然后当我调用该字段时,相关字段为空。