How to create a UserProfile form in Django with first_name, last_name modifications?

前端 未结 7 1314
挽巷
挽巷 2020-11-29 19:55

If think my question is pretty obvious and almost every developer working with UserProfile should be able to answer it.

However, I could not find any he

7条回答
  •  暗喜
    暗喜 (楼主)
    2020-11-29 20:43

    Here is how I finally did :

    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
    

提交回复
热议问题