Comment puis-je utiliser UpdateView?

J'en ai deux, probablement, des problèmes avec UpdateView. Tout d'abord, il n'est pas la mise à jour de l'utilisateur, mais la création d'un nouvel objet utilisateur. Deuxièmement, je ne peut pas restreindre les champs affichés dans le formulaire.

Voici mon views.py:

class RegistrationView(FormView):
    form_class = RegistrationForm 
    template_name = "register.html"
    success_url = "/accounts/profile/" 

    def form_valid(self, form):
        if form.is_valid:
            user = form.save() 
            user = authenticate(username=user.username, password=form.cleaned_data['password1'])
            login(self.request, user)
            return super(RegistrationView, self).form_valid(form) #I still have no idea what this is

class UserUpdate(UpdateView):
    model = User
    form_class = RegistrationForm
    fields = ['username', 'first_name']
    template_name = "update.html"
    success_url = "/accounts/profile/" 

et urls.py

url(r'^create/$', RegistrationView.as_view(), name="create-user"), 
url(r'^profile/(?P<pk>\d+)/edit/$', UserUpdate.as_view(), name="user-update"), 

Comment puis-je utiliser correctement UpdateView? Merci à l'avance.

Il n'est pas strictement liées, mais vérifiez ceci: lightbird.net/dbe2/index.html et github.com/pennersr/django-allauth
Plusieurs points: une fois que vous appelez la form_valid() méthode, vous n'avez pas besoin de vérifier si le formulaire est valide. Qui est réalisée dans le post() méthode (voir: ccbv.co.royaume-uni/projets/Django/1.8/django.les vues.génériques.edit/...). La dernière ligne de form_valid() méthode garantit que nous appelons form_valid() correctement dans RegistrationView parent (UpdateView).

OriginalL'auteur aled1027 | 2013-08-01