Vous n'êtes pas identifié(e).
Bonjour,
J'essaie de remplir mes champs avec les valeurs de l'utilisateur authentifié..
Lors du passage dans __init__ les champs sont remplis avec les valeurs attendues. En revanche à l'affichage les champs restent vides.
Je tourne autour du pot depuis le début de l'après-midi et je ne vois plus comment faire.
Le code form/view est le suivant. Le modèle User est le standard de Django avec une couche Allauth.
from django.contrib.auth.models import User
class UserProfileChangeUsernameMailForm(forms.ModelForm):
class Meta:
'username', 'email']
def __init__(self, *args, **kwargs):
'user')
super(forms.ModelForm, self).__init__(*args, **kwargs)
'username'].initial = self.user.username
'email'].initial = self.user.email
class UserProfileChangeUsernameMailView(LoginRequiredMixin, AjaxCapableProcessFormViewMixin, FormView):
"personalshowper/userprofile/username_mail_change.html"
"userprofile_change_username_mail")
def get_form_class(self):
return get_form_class(app_settings.FORMS,
'change_username_mail',
def get_form_kwargs(self):
"user"] = self.request.user
return kwargs
def get_context_data(self, **kwargs):
return ret
class UserProfileChangeUsernameMailView(LoginRequiredMixin, AjaxCapableProcessFormViewMixin, FormView):
"personalshowper/userprofile/username_mail_change.html"
"userprofile_change_username_mail")
def get_form_kwargs(self):
"user"] = self.request.user
return kwargs
def get_context_data(self, **kwargs):
return ret
Je suis preneur de toute aide.
Cordialement
Hors ligne
Tu veux peut-être associer ton ModelForm à ton modèle?
class UserProfileChangeUsernameMailForm(forms.ModelForm):
class Meta:
model = User
fields = ['username', 'email']
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
kwargs['instance'] = self.user
super(forms.ModelForm, self).__init__(*args, **kwargs)
……
2016-05-17 23:48 GMT+02:00 Encolpe DEGOUTE <encolpe.degoute _AT_ free.fr>:
> Bonjour,
>
>
>
> J'essaie de remplir mes champs avec les valeurs de l'utilisateur
> authentifié..
>
> Lors du passage dans __init__ les champs sont remplis avec les valeurs
> attendues. En revanche à l'affichage les champs restent vides.
>
> Je tourne autour du pot depuis le début de l'après-midi et je ne vois plus
> comment faire.
>
>
>
> Le code form/view est le suivant. Le modèle User est le standard de Django
> avec une couche Allauth.
>
>
>
> from django.contrib.auth.models import User
>
> class UserProfileChangeUsernameMailForm(forms.ModelForm):
> class Meta:
> model = User
> fields = ['username', 'email']
>
> def __init__(self, *args, **kwargs):
> self.user = kwargs.pop('user')
> super(forms.ModelForm, self).__init__(*args, **kwargs)
> self.fields['username'].initial = self.user.username
> self.fields['email'].initial = self.user.email
>
>
> class UserProfileChangeUsernameMailView(LoginRequiredMixin,
> AjaxCapableProcessFormViewMixin, FormView):
> template_name = "personalshowper/userprofile/username_mail_change.html"
> form_class = UserProfileChangeUsernameMailForm
> success_url = reverse_lazy("userprofile_change_username_mail")
>
> def get_form_class(self):
> return get_form_class(app_settings.FORMS,
> 'change_username_mail',
> self.form_class)
>
> def get_form_kwargs(self):
> kwargs = super(UserProfileChangeUsernameMailView,
> self).get_form_kwargs()
> kwargs["user"] = self.request.user
> return kwargs
>
> def get_context_data(self, **kwargs):
> ret = super(UserProfileChangeUsernameMailView,
> self).get_context_data(**kwargs)
> return ret
>
>
> class UserProfileChangeUsernameMailView(LoginRequiredMixin,
> AjaxCapableProcessFormViewMixin, FormView):
> template_name = "personalshowper/userprofile/username_mail_change.html"
> form_class = UserProfileChangeUsernameMailForm
> success_url = reverse_lazy("userprofile_change_username_mail")
>
> def get_form_kwargs(self):
> kwargs = super(UserProfileChangeUsernameMailView,
> self).get_form_kwargs()
> kwargs["user"] = self.request.user
> return kwargs
>
> def get_context_data(self, **kwargs):
> ret = super(UserProfileChangeUsernameMailView,
> self).get_context_data(**kwargs)
> return ret
>
>
> Je suis preneur de toute aide.
>
> Cordialement
>
> --
>
> Encolpe Degoute
>
> http://encolpe.wordpress.com
>
> http://encolpe.degoute.free.fr
>
> Logiciels libres, hockey sur glace et autres activités cérébrales
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
Hors ligne
Peut-être que ceci peut t'aider:
http://stackoverflow.com/questions/1727564/how-to-create-a-userprofile-form-in-django-with-first-name-last-name-modificati/1727685#1727685
Le 18/05/2016 08:55, Christophe Narbonne a écrit :
> Tu veux peut-être associer ton ModelForm à ton modèle?
>
> classUserProfileChangeUsernameMailForm(forms.ModelForm):
> classMeta:
> model = User
> fields = ['username', 'email']
>
> def__init__(self, *args, **kwargs):
> self.user = kwargs.pop('user', None)
> kwargs['instance'] = self.user
> super(forms.ModelForm, self).__init__(*args, **kwargs)
> ……
>
> 2016-05-17 23:48 GMT+02:00 Encolpe DEGOUTE <encolpe.degoute _AT_ free.fr
> <mailto:encolpe.degoute _AT_ free.fr>>:
>
> Bonjour,
>
>
>
> J'essaie de remplir mes champs avec les valeurs de l'utilisateur
> authentifié..
>
> Lors du passage dans __init__ les champs sont remplis avec les
> valeurs attendues. En revanche à l'affichage les champs restent vides.
>
> Je tourne autour du pot depuis le début de l'après-midi et je ne
> vois plus comment faire.
>
>
>
> Le code form/view est le suivant. Le modèle User est le standard
> de Django avec une couche Allauth.
>
>
>
> fromdjango.contrib.auth.models importUser
>
> classUserProfileChangeUsernameMailForm(forms.ModelForm):
> classMeta:
> model = User
> fields = ['username', 'email']
>
> def__init__(self, *args, **kwargs):
> self.user = kwargs.pop('user')
> super(forms.ModelForm, self).__init__(*args, **kwargs)
> self.fields['username'].initial = self.user.username
> self.fields['email'].initial = self.user.email
>
>
> classUserProfileChangeUsernameMailView(LoginRequiredMixin,
> AjaxCapableProcessFormViewMixin, FormView):
> template_name =
> "personalshowper/userprofile/username_mail_change.html"
> form_class = UserProfileChangeUsernameMailForm
> success_url = reverse_lazy("userprofile_change_username_mail")
>
> defget_form_class(self):
> returnget_form_class(app_settings.FORMS,
> 'change_username_mail',
> self.form_class)
>
> defget_form_kwargs(self):
> kwargs = super(UserProfileChangeUsernameMailView,
> self).get_form_kwargs()
> kwargs["user"] = self.request.user
> returnkwargs
>
> defget_context_data(self, **kwargs):
> ret = super(UserProfileChangeUsernameMailView,
> self).get_context_data(**kwargs)
> returnret
>
>
> classUserProfileChangeUsernameMailView(LoginRequiredMixin,
> AjaxCapableProcessFormViewMixin, FormView):
> template_name =
> "personalshowper/userprofile/username_mail_change.html"
> form_class = UserProfileChangeUsernameMailForm
> success_url = reverse_lazy("userprofile_change_username_mail")
>
> defget_form_kwargs(self):
> kwargs = super(UserProfileChangeUsernameMailView,
> self).get_form_kwargs()
> kwargs["user"] = self.request.user
> returnkwargs
>
> defget_context_data(self, **kwargs):
> ret = super(UserProfileChangeUsernameMailView,
> self).get_context_data(**kwargs)
> returnret
>
>
> Je suis preneur de toute aide.
>
> Cordialement
>
> --
>
> Encolpe Degoute
>
> http://encolpe.wordpress.com
>
> http://encolpe.degoute.free.fr
>
> Logiciels libres, hockey sur glace et autres activités cérébrales
>
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org <mailto:django _AT_ lists.afpy.org>
> http://lists.afpy.org/mailman/listinfo/django
>
>
>
>
> --
> Best regards,
> Christophe Narbonne
>
> http://links.christophe31.net/
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
Hors ligne
Après une bonne nuit de sommeil mon code fonctionne en l'état…
En revanche il me crée un nouvel User avant de passer dans la méthode save ce qui me donne une erreur de duplicate :
ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « auth_user_username_key »
DETAIL: La clé « (username)=(edegoute3) » existe déjà.
Si je rajoute pas la méthode form_valid dans la vue, le code ne passe jamais dans le save.
À nouveau je ne suis pas très loin, mais je butte sur cette erreur.
class UserProfileChangeUsernameMailForm(forms.ModelForm, UserForm):
class Meta:
model = User
fields = ['username', 'email']
def __init__(self, user=None, *args, **kwargs):
self.user = user
super(UserProfileChangeUsernameMailForm, self).__init__(*args, **kwargs)
self.fields['username'].initial = self.user.username
self.fields['email'].initial = self.user.email
def save(self, *args, **kw):
super(UserProfileChangeUsernameMailForm, self).save(*args, **kw)
self.user.username = self.cleaned_data.get('username')
self.user.email = self.cleaned_data.get('email')
self.user.save()
class UserProfileChangeUsernameMailView(LoginRequiredMixin, AjaxCapableProcessFormViewMixin, FormView):
template_name = "personalshowper/userprofile/username_mail_change.html"
form_class = UserProfileChangeUsernameMailForm
success_url = reverse_lazy("userprofile_username_mail")
def get_form_class(self):
return get_form_class(app_settings.FORMS,
'userprofile_username_mail',
self.form_class)
def get_form_kwargs(self):
kwargs = super(UserProfileChangeUsernameMailView, self).get_form_kwargs()
kwargs["user"] = self.request.user
return kwargs
def get_context_data(self, **kwargs):
ret = super(UserProfileChangeUsernameMailView, self).get_context_data(**kwargs)
return ret
def form_valid(self, form):
form.save()
return super(UserProfileChangeUsernameMailView, self).form_valid(form)
----- Mail original -----
De: "Rémy Hubscher" <hubscher.remy _AT_ gmail.com>
À: django _AT_ lists.afpy.org
Envoyé: Mercredi 18 Mai 2016 09:44:48
Objet: Re: [afpy/django] Problème de valeur initiale des champs pour un ModelForm
Peut-être que ceci peut t'aider: http://stackoverflow.com/questions/1727564/how-to-create-a-userprofile-form-in-django-with-first-name-last-name-modificati/1727685#1727685
Le 18/05/2016 08:55, Christophe Narbonne a écrit :
Tu veux peut-être associer ton ModelForm à ton modèle?
class UserProfileChangeUsernameMailForm (forms.ModelForm):
class Meta :
model = User
fields = [ 'username' , 'email' ]
def __init__ (self, *args, **kwargs):
self.user = kwargs.pop( 'user' , None)
kwargs['instance'] = self.user
super (forms.ModelForm, self).__init__(*args, **kwargs)
……
2016-05-17 23:48 GMT+02:00 Encolpe DEGOUTE < encolpe.degoute _AT_ free.fr > :
<blockquote>
Bonjour,
J'essaie de remplir mes champs avec les valeurs de l'utilisateur authentifié..
Lors du passage dans __init__ les champs sont remplis avec les valeurs attendues. En revanche à l'affichage les champs restent vides.
Je tourne autour du pot depuis le début de l'après-midi et je ne vois plus comment faire.
Le code form/view est le suivant. Le modèle User est le standard de Django avec une couche Allauth.
from django.contrib.auth.models import User
class UserProfileChangeUsernameMailForm (forms.ModelForm):
class Meta :
model = User
fields = [ 'username' , 'email' ]
def __init__ (self, *args, **kwargs):
self.user = kwargs.pop( 'user' )
super (forms.ModelForm, self).__init__(*args, **kwargs)
self.fields[ 'username' ].initial = self.user.username
self.fields[ 'email' ].initial = self.user.email
class UserProfileChangeUsernameMailView (LoginRequiredMixin, AjaxCapableProcessFormViewMixin, FormView):
template_name = "personalshowper/userprofile/username_mail_change.html"
form_class = UserProfileChangeUsernameMailForm
success_url = reverse_lazy( "userprofile_change_username_mail" )
def get_form_class (self):
return get_form_class(app_settings.FORMS,
'change_username_mail' ,
self.form_class)
def get_form_kwargs (self):
kwargs = super(UserProfileChangeUsernameMailView, self).get_form_kwargs()
kwargs[ "user" ] = self.request.user
return kwargs
def get_context_data (self, **kwargs):
ret = super(UserProfileChangeUsernameMailView, self).get_context_data(**kwargs)
return ret
class UserProfileChangeUsernameMailView (LoginRequiredMixin, AjaxCapableProcessFormViewMixin, FormView):
template_name = "personalshowper/userprofile/username_mail_change.html"
form_class = UserProfileChangeUsernameMailForm
success_url = reverse_lazy( "userprofile_change_username_mail" )
def get_form_kwargs (self):
kwargs = super(UserProfileChangeUsernameMailView, self).get_form_kwargs()
kwargs[ "user" ] = self.request.user
return kwargs
def get_context_data (self, **kwargs):
ret = super(UserProfileChangeUsernameMailView, self).get_context_data(**kwargs)
return ret
Je suis preneur de toute aide.
Cordialement
Hors ligne
Les ModelForm requièrent un paramètre `instance` pour des modifications
d'une instance donnée… Voir ma précédente réponse…
2016-05-18 15:14 GMT+02:00 Encolpe DEGOUTE <encolpe.degoute _AT_ free.fr>:
>
> Après une bonne nuit de sommeil mon code fonctionne en l'état…
> En revanche il me crée un nouvel User avant de passer dans la méthode save
> ce qui me donne une erreur de duplicate :
>
> ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « auth_user_username_key »
> DETAIL: La clé « (username)=(edegoute3) » existe déjà.
>
>
> Si je rajoute pas la méthode form_valid dans la vue, le code ne passe
> jamais dans le save.
> À nouveau je ne suis pas très loin, mais je butte sur cette erreur.
>
>
> class UserProfileChangeUsernameMailForm(forms.ModelForm, UserForm):
> class Meta:
> model = User
> fields = ['username', 'email']
>
> def __init__(self, user=None, *args, **kwargs):
> self.user = user
> super(UserProfileChangeUsernameMailForm, self).__init__(*args,
> **kwargs)
> self.fields['username'].initial = self.user.username
> self.fields['email'].initial = self.user.email
>
> def save(self, *args, **kw):
> super(UserProfileChangeUsernameMailForm, self).save(*args, **kw)
> self.user.username = self.cleaned_data.get('username')
> self.user.email = self.cleaned_data.get('email')
> self.user.save()
>
>
> class UserProfileChangeUsernameMailView(LoginRequiredMixin,
> AjaxCapableProcessFormViewMixin, FormView):
> template_name = "personalshowper/userprofile/username_mail_change.html"
> form_class = UserProfileChangeUsernameMailForm
> success_url = reverse_lazy("userprofile_username_mail")
>
> def get_form_class(self):
> return get_form_class(app_settings.FORMS,
> 'userprofile_username_mail',
> self.form_class)
>
> def get_form_kwargs(self):
> kwargs = super(UserProfileChangeUsernameMailView,
> self).get_form_kwargs()
> kwargs["user"] = self.request.user
> return kwargs
>
> def get_context_data(self, **kwargs):
> ret = super(UserProfileChangeUsernameMailView,
> self).get_context_data(**kwargs)
> return ret
>
> def form_valid(self, form):
> form.save()
> return super(UserProfileChangeUsernameMailView,
> self).form_valid(form)
>
>
>
> ------------------------------
> *De: *"Rémy Hubscher" <hubscher.remy _AT_ gmail.com>
> *À: *django _AT_ lists.afpy.org
> *Envoyé: *Mercredi 18 Mai 2016 09:44:48
> *Objet: *Re: [afpy/django] Problème de valeur initiale des champs pour un
> ModelForm
>
>
> Peut-être que ceci peut t'aider:
> http://stackoverflow.com/questions/1727564/how-to-create-a-userprofile-form-in-django-with-first-name-last-name-modificati/1727685#1727685
>
> Le 18/05/2016 08:55, Christophe Narbonne a écrit :
>
> Tu veux peut-être associer ton ModelForm à ton modèle?
>
> class UserProfileChangeUsernameMailForm(forms.ModelForm):
> class Meta:
> model = User
> fields = ['username', 'email']
>
> def __init__(self, *args, **kwargs):
> self.user = kwargs.pop('user', None)
> kwargs['instance'] = self.user
> super(forms.ModelForm, self).__init__(*args, **kwargs)
> ……
>
> 2016-05-17 23:48 GMT+02:00 Encolpe DEGOUTE <encolpe.degoute _AT_ free.fr>:
>
>> Bonjour,
>>
>>
>>
>> J'essaie de remplir mes champs avec les valeurs de l'utilisateur
>> authentifié..
>>
>> Lors du passage dans __init__ les champs sont remplis avec les valeurs
>> attendues. En revanche à l'affichage les champs restent vides.
>>
>> Je tourne autour du pot depuis le début de l'après-midi et je ne vois
>> plus comment faire.
>>
>>
>>
>> Le code form/view est le suivant. Le modèle User est le standard de
>> Django avec une couche Allauth.
>>
>>
>>
>> from django.contrib.auth.models import User
>>
>> class UserProfileChangeUsernameMailForm(forms.ModelForm):
>> class Meta:
>> model = User
>> fields = ['username', 'email']
>>
>> def __init__(self, *args, **kwargs):
>> self.user = kwargs.pop('user')
>> super(forms.ModelForm, self).__init__(*args, **kwargs)
>> self.fields['username'].initial = self.user.username
>> self.fields['email'].initial = self.user.email
>>
>>
>> class UserProfileChangeUsernameMailView(LoginRequiredMixin,
>> AjaxCapableProcessFormViewMixin, FormView):
>> template_name =
>> "personalshowper/userprofile/username_mail_change.html"
>> form_class = UserProfileChangeUsernameMailForm
>> success_url = reverse_lazy("userprofile_change_username_mail")
>>
>> def get_form_class(self):
>> return get_form_class(app_settings.FORMS,
>> 'change_username_mail',
>> self.form_class)
>>
>> def get_form_kwargs(self):
>> kwargs = super(UserProfileChangeUsernameMailView,
>> self).get_form_kwargs()
>> kwargs["user"] = self.request.user
>> return kwargs
>>
>> def get_context_data(self, **kwargs):
>> ret = super(UserProfileChangeUsernameMailView,
>> self).get_context_data(**kwargs)
>> return ret
>>
>>
>> class UserProfileChangeUsernameMailView(LoginRequiredMixin,
>> AjaxCapableProcessFormViewMixin, FormView):
>> template_name =
>> "personalshowper/userprofile/username_mail_change.html"
>> form_class = UserProfileChangeUsernameMailForm
>> success_url = reverse_lazy("userprofile_change_username_mail")
>>
>> def get_form_kwargs(self):
>> kwargs = super(UserProfileChangeUsernameMailView,
>> self).get_form_kwargs()
>> kwargs["user"] = self.request.user
>> return kwargs
>>
>> def get_context_data(self, **kwargs):
>> ret = super(UserProfileChangeUsernameMailView,
>> self).get_context_data(**kwargs)
>> return ret
>>
>>
>> Je suis preneur de toute aide.
>>
>> Cordialement
>>
>> --
>>
>> Encolpe Degoute
>>
>> <http://encolpe.wordpress.com>http://encolpe.wordpress.com
>>
>> <http://encolpe.degoute.free.fr>http://encolpe.degoute.free.fr
>>
>> Logiciels libres, hockey sur glace et autres activités cérébrales
>>
>>
>>
>> _______________________________________________
>> django mailing list
>> django _AT_ lists.afpy.org
>> http://lists.afpy.org/mailman/listinfo/django
>>
>
>
>
> --
> Best regards,
> Christophe Narbonne
>
> http://links.christophe31.net/
>
>
> _______________________________________________
> django mailing listdjango _AT_ lists.afpy.orghttp://lists.afpy.org/mailman/listinfo/django
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
Hors ligne
Cette phrase m'a plus aidé que l'exemple de code.
Merci.
Le mercredi 18 mai 2016, 22:29:35 CEST Christophe Narbonne a écrit :
> Les ModelForm requièrent un paramètre `instance` pour des modifications
> d'une instance donnée… Voir ma précédente réponse…
>
> 2016-05-18 15:14 GMT+02:00 Encolpe DEGOUTE <encolpe.degoute _AT_ free.fr>:
>
> >
> > Après une bonne nuit de sommeil mon code fonctionne en l'état…
> > En revanche il me crée un nouvel User avant de passer dans la méthode save
> > ce qui me donne une erreur de duplicate :
> >
> > ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « auth_user_username_key »
> > DETAIL: La clé « (username)=(edegoute3) » existe déjà.
> >
> >
> > Si je rajoute pas la méthode form_valid dans la vue, le code ne passe
> > jamais dans le save.
> > À nouveau je ne suis pas très loin, mais je butte sur cette erreur.
> >
> >
> > class UserProfileChangeUsernameMailForm(forms.ModelForm, UserForm):
> > class Meta:
> > model = User
> > fields = ['username', 'email']
> >
> > def __init__(self, user=None, *args, **kwargs):
> > self.user = user
> > super(UserProfileChangeUsernameMailForm, self).__init__(*args,
> > **kwargs)
> > self.fields['username'].initial = self.user.username
> > self.fields['email'].initial = self.user.email
> >
> > def save(self, *args, **kw):
> > super(UserProfileChangeUsernameMailForm, self).save(*args, **kw)
> > self.user.username = self.cleaned_data.get('username')
> > self.user.email = self.cleaned_data.get('email')
> > self.user.save()
> >
> >
> > class UserProfileChangeUsernameMailView(LoginRequiredMixin,
> > AjaxCapableProcessFormViewMixin, FormView):
> > template_name = "personalshowper/userprofile/username_mail_change.html"
> > form_class = UserProfileChangeUsernameMailForm
> > success_url = reverse_lazy("userprofile_username_mail")
> >
> > def get_form_class(self):
> > return get_form_class(app_settings.FORMS,
> > 'userprofile_username_mail',
> > self.form_class)
> >
> > def get_form_kwargs(self):
> > kwargs = super(UserProfileChangeUsernameMailView,
> > self).get_form_kwargs()
> > kwargs["user"] = self.request.user
> > return kwargs
> >
> > def get_context_data(self, **kwargs):
> > ret = super(UserProfileChangeUsernameMailView,
> > self).get_context_data(**kwargs)
> > return ret
> >
> > def form_valid(self, form):
> > form.save()
> > return super(UserProfileChangeUsernameMailView,
> > self).form_valid(form)
> >
> >
> >
> > ------------------------------
> > *De: *"Rémy Hubscher" <hubscher.remy _AT_ gmail.com>
> > *À: *django _AT_ lists.afpy.org
> > *Envoyé: *Mercredi 18 Mai 2016 09:44:48
> > *Objet: *Re: [afpy/django] Problème de valeur initiale des champs pour un
> > ModelForm
> >
> >
> > Peut-être que ceci peut t'aider:
> > http://stackoverflow.com/questions/1727564/how-to-create-a-userprofile-form-in-django-with-first-name-last-name-modificati/1727685#1727685
> >
> > Le 18/05/2016 08:55, Christophe Narbonne a écrit :
> >
> > Tu veux peut-être associer ton ModelForm à ton modèle?
> >
> > class UserProfileChangeUsernameMailForm(forms.ModelForm):
> > class Meta:
> > model = User
> > fields = ['username', 'email']
> >
> > def __init__(self, *args, **kwargs):
> > self.user = kwargs.pop('user', None)
> > kwargs['instance'] = self.user
> > super(forms.ModelForm, self).__init__(*args, **kwargs)
> > ……
> >
> > 2016-05-17 23:48 GMT+02:00 Encolpe DEGOUTE <encolpe.degoute _AT_ free.fr>:
> >
> >> Bonjour,
> >>
> >>
> >>
> >> J'essaie de remplir mes champs avec les valeurs de l'utilisateur
> >> authentifié..
> >>
> >> Lors du passage dans __init__ les champs sont remplis avec les valeurs
> >> attendues. En revanche à l'affichage les champs restent vides.
> >>
> >> Je tourne autour du pot depuis le début de l'après-midi et je ne vois
> >> plus comment faire.
> >>
> >>
> >>
> >> Le code form/view est le suivant. Le modèle User est le standard de
> >> Django avec une couche Allauth.
> >>
> >>
> >>
> >> from django.contrib.auth.models import User
> >>
> >> class UserProfileChangeUsernameMailForm(forms.ModelForm):
> >> class Meta:
> >> model = User
> >> fields = ['username', 'email']
> >>
> >> def __init__(self, *args, **kwargs):
> >> self.user = kwargs.pop('user')
> >> super(forms.ModelForm, self).__init__(*args, **kwargs)
> >> self.fields['username'].initial = self.user.username
> >> self.fields['email'].initial = self.user.email
> >>
> >>
> >> class UserProfileChangeUsernameMailView(LoginRequiredMixin,
> >> AjaxCapableProcessFormViewMixin, FormView):
> >> template_name =
> >> "personalshowper/userprofile/username_mail_change.html"
> >> form_class = UserProfileChangeUsernameMailForm
> >> success_url = reverse_lazy("userprofile_change_username_mail")
> >>
> >> def get_form_class(self):
> >> return get_form_class(app_settings.FORMS,
> >> 'change_username_mail',
> >> self.form_class)
> >>
> >> def get_form_kwargs(self):
> >> kwargs = super(UserProfileChangeUsernameMailView,
> >> self).get_form_kwargs()
> >> kwargs["user"] = self.request.user
> >> return kwargs
> >>
> >> def get_context_data(self, **kwargs):
> >> ret = super(UserProfileChangeUsernameMailView,
> >> self).get_context_data(**kwargs)
> >> return ret
> >>
> >>
> >> class UserProfileChangeUsernameMailView(LoginRequiredMixin,
> >> AjaxCapableProcessFormViewMixin, FormView):
> >> template_name =
> >> "personalshowper/userprofile/username_mail_change.html"
> >> form_class = UserProfileChangeUsernameMailForm
> >> success_url = reverse_lazy("userprofile_change_username_mail")
> >>
> >> def get_form_kwargs(self):
> >> kwargs = super(UserProfileChangeUsernameMailView,
> >> self).get_form_kwargs()
> >> kwargs["user"] = self.request.user
> >> return kwargs
> >>
> >> def get_context_data(self, **kwargs):
> >> ret = super(UserProfileChangeUsernameMailView,
> >> self).get_context_data(**kwargs)
> >> return ret
> >>tres activités cérébrales
> >>
Hors ligne