我正在使用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)
但是在将来添加额外字段时,感觉这会使我的视图定义混乱。
此致
杰拉德。
答案 0 :(得分:1)
我相信你正在寻找inline formsets。它们专为处理相关对象而设计。
答案 1 :(得分:1)
我通常只创建两个表单,每个表单一个。参见例如this message举个例子。