【发布时间】:2013-08-17 17:50:53
【问题描述】:
看起来如果给 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)
然后当我调用该字段时,相关字段为空。
【问题讨论】:
-
如果有人仍然遇到这个问题,请看这里:stackoverflow.com/a/26887842/11983534
-
如果有人仍然遇到这个问题,请看这里:stackoverflow.com/a/26887842/11983534
标签: django django-forms django-1.4