一尘不染

如何在Django中使用first_name,last_name修改创建UserProfile表单?

django

如果认为我的问题很明显,并且几乎每个与之合作的开发人员UserProfile都应该能够回答。

但是,我在django文档或Django Book中找不到任何帮助。

当你要UserProfile使用Django Forms制作表单时,你想要修改配置文件字段以及某些User字段。

但是还没有forms.UserProfileForm(还?)!

你是怎样做的?


阅读 574

收藏
2020-03-29

共1个答案

一尘不染

这是我最终的做法:

class UserProfileForm(forms.ModelForm):
    first_name = forms.CharField(label=_(u'Prénom'), max_length=30)
    last_name = forms.CharField(label=_(u'Nom'), max_length=30)

    def __init__(self, *args, **kw):
        super(UserProfileForm, self).__init__(*args, **kw)
        self.fields['first_name'].initial = self.instance.user.first_name
        self.fields['last_name'].initial = self.instance.user.last_name

        self.fields.keyOrder = [
            'first_name',
            'last_name',
            ...some_other...
            ]

    def save(self, *args, **kw):
        super(UserProfileForm, self).save(*args, **kw)
        self.instance.user.first_name = self.cleaned_data.get('first_name')
        self.instance.user.last_name = self.cleaned_data.get('last_name')
        self.instance.user.save()

    class Meta:
        model = UserProfile
2020-03-29