Django:如何在一个表单定义中从两个模型启动/收集字段数据

时间:2009-12-07 14:19:01

标签: django django-models django-forms

我正在使用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 个答案:

答案 0 :(得分:1)

我相信你正在寻找inline formsets。它们专为处理相关对象而设计。

答案 1 :(得分:1)

我通常只创建两个表单,每个表单一个。参见例如this message举个例子。

相关问题