我正在使用Modelform for User来编辑first_name和last_name,但是我想要一个额外的字段来自UserProfile(与User具有1对1的关系) .
class UserProfileInfoForm(forms.ModelForm):
""" Profile Model field specifications for edit.
"""
class Meta:
model = User
fields = ('first_name', 'last_name', 'user_phonemobile')
first_name = forms.CharField(
label = _('First name'),
max_length = 30,
required = True
)
last_name = forms.CharField(
label = _('Last name'),
max_length = 30,
required = True
)
user_phonemobile = forms.CharField(
label = _('Mobile phone'),
max_length = 15,
required = False,
)
我在ModelForm中有额外的字段(并显示在页面上)但我无法用其他模型(UserProfile)中的值填充它 . 一直试图做它继承模型的 init 但到目前为止没有运气 .
我可以当然把它变成一个普通的形式,并在我看来像这样填充它
userdata = request.user.get_profile()
data = {
'first_name': request.user.first_name,
'last_name': request.user.last_name,
'user_phonemobile': userdata.user_phonemobile,
}
profileinfoform = UserProfileInfoForm(data)
但是在将来添加额外的字段时,感觉这会使我的视图定义混乱 .
问候,
杰拉德 .
2 回答
我通常只创建两个表单,每个表单一个 . 参见例如this message举个例子 .
我相信你在寻找inline formsets . 它们专为处理相关对象而设计 .