首页 文章

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

提问于
浏览
2

我正在使用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 回答

  • 1

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

  • 1

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

相关问题