La mise à jour de modèle d'Utilisateur de Django avec classe UpdateView
Je suis en train de mettre à jour le Django d'Utilisateur modèle avec la classe de base UpdateView qui rend automatiquement à l'utilisateur actuel, mais je reçois une erreur qu'un pk ou slug est nécessaire. Le travail de la forme et rend le bon contexte utilisateur actuel, mais jette le message d'erreur quand j'essaie d'envoyer les modifications. Ci-dessous le point de vue, je suis en utilisant:
class UserUpdateView(UpdateView):
form_class = UserForm
model = User
template_name = 'members/user_update.html'
def get(self, request, **kwargs):
self.object = User.objects.get(username=self.request.user)
form_class = self.get_form_class()
form = self.get_form(form_class)
context = self.get_context_data(object=self.object, form=form)
return self.render_to_response(context)
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.user = self.request.user
self.object.save()
return HttpResponseRedirect(self.get_success_url())
Vous devez vous connecter pour publier un commentaire.
J'ai besoin de remplacer la
get_object()
méthode sur la mise à jour de la vue et n'ont pas besoin de remplacer form_valid. La coutumeget_object()
méthode est la suivante:Je sais que c'est un vieux post, mais quelque chose se détachait de moi et de ce commentaire est de l'info pour les nouveaux arrivants.
L'obtenir de l'appel pour l'auto.objet de travail, mais il ne correspond pas à la réelle champs d'un nom d'utilisateur comme c'est fournir à l'utilisateur exemple:
Vous doit correspondre au nom d'utilisateur argument avec l'instance argument username:
Mieux encore, utiliser le pk (id):
Il pourrait y avoir un plus propre façon de faire cela, donc je suis ouvert aux suggestions.