2014-01-08 2 views
1

Чтобы использовать UpdateView без pk в URL-адресе, я переопределяю функцию get_object, однако, когда я его тестирую, форма не сохраняется. Существуют две модели: пользователь и профиль, с отношением OnetoOne.Django Update View не сохраняет

Мой URL выглядит следующим образом:

url(r'^profile/edit/$', profileviews.ProfileUpdateView.as_view(template_name="Pages_Profile/profileupdate.html"),name="profileupdate_URL"), 

А класс мнение:

class ProfileUpdateView(UpdateView): 
    model = Profile 
    form_class = UserProfileForm 

    def get_object(self, queryset=None): 
     return get_object_or_404(self.model, user=self.request.user) 

    @method_decorator(login_required) 
    def dispatch(self, request, *args, **kwargs): 
     return super(ProfileUpdateView, self).dispatch(request, *args, **kwargs) 

Я думаю, что проблема лежит на взгляд, но я не могу понять. Может ли кто-нибудь помочь мне? Спасибо.

ответ

0

Существует проект под названием django-braces, который включает в себя целую кучу полезного общего зрения Mixins, чтобы помочь с помощью Django ОЦК (просмотры на основе класса):

from braces.views import LoginRequiredMixin 

class ProfileUpdateView(LoginRequiredMixin, UpdateView): 
    model = Profile 
    form_class = UserProfileForm 

    def get_object(self, queryset=None): 
     return get_object_or_404(self.model, user=self.request.user) 

Вы можете узнать больше об этом here.