Je souhaite ajouter les champs first_name
, last_name
et email
à la page d'administration UserProfile. Ainsi, vous pouvez modifier tous les détails de l'utilisateur à partir de l'administrateur UserProfile au lieu d'avoir à aller sur une page différente pour modifier les e-mails et d'autres champs.Branchement des valeurs dans les champs ModelForm à __init__ temps
C'est ce que mon formulaire personnalisé ressemble à:
class CustomProfileForm(forms.ModelForm):
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
email = forms.EmailField()
class Meta:
model = UserProfile
def __init__(self, *a, **k):
super(CustomProfileForm, self).__init__(*a, **k)
self.user_instance = None
if self.instance:
self.user_instance = self.instance.user
def clean_first_name(self):
self.user_instance.first_name = self.cleaned_data['first_name']
def clean_first_name(self):
self.user_instance.last_name = self.cleaned_data['laset_name']
def clean(self):
self.user_instance.save()
return self.cleaned_data
class UserProfileAdmin(admin.ModelAdmin):
form = CustomProfileForm
Je ne sais pas quoi faire pour compléter cela. Je dois donner les détails user_instance
à la classe de formulaire appropriée.
Ce que je veux dire, c'est que l'adresse e-mail, le nom et le prénom de l'utilisateur soient ajoutés dans les zones de texte lorsque le formulaire est affiché. Actuellement, seules les informations de l'objet UserProfile sont ajoutées aux formulaires liés. Je dois ajouter des données de l'instance 'Userprofile.user'. – priestc
Oups, je n'ai pas combiné votre titre avec le corps de votre question. Édité. –