PanovSergey
судя по исходникам
это я уже “всякие экспериметны ставлю” … в доках скудно, примеров с UpdateView не нашел.
Не могли бы разъяснить подробнее. Как передать форматированную строчку или что в методе переопределить.
Делаю согласно документации к django 1.6 (
http://djbook.ru/rel1.6/topics/class-based-views/generic-editing.html)class MyFormUpdate(LoginRequiredMixin,generic.UpdateView):
model = MyModel
success_url = reverse_lazy('user_detail')
class MyFormDelete(LoginRequiredMixin,generic.DeleteView):
model = MyModel
success_url = reverse_lazy('user_detail')
url(r'^profile/$', views.ExUserProfileView.as_view(), name='user_detail'),
после POST перехода в profile/, соответствующему user_detail нет.
P.S. вот все что есть в док. по этому поводу
Формы моделей(Model Forms)
Общие CBV раскрываются во всей красе при работе с моделями. Они автоматически создают класс ModelForm при работе с моделями:
Если указано значение атрибута model, то будет использоваться этот класс модели.
Если метод get_object() возвращает объект, то будет использоваться класс этого объекта.
Если указан атрибут queryset, то будет использована модель этого запроса(queryset).
Представления форм, связанные с моделями, предоставляют реализацию метода form_valid(), которая автоматически сохраняет модель. Вы можете переопределить этот метод согласно вашим требованиям; смотрите примеры ниже.
Вы можете не устанавливать значение success_url для классов CreateView или UpdateView - они воспользуются методом get_absolute_url() объекта модели (если такой объект доступен).
Если вам необходимо специальное поведение для ModelForm (например для дополнительной валидации данных) просто установите form_class в нужное значение.
Примечание
При создании пользовательского класса формы, вы по прежнему должны указать модель. Даже в том случае если в form_class используется ModelForm.
Во-первых, мы должны добавить метод get_absolute_url() в наш класс Author :
# models.py
from django.core.urlresolvers import reverse
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=200)
def get_absolute_url(self):
return reverse('author-detail', kwargs={'pk': self.pk})
Затем мы можем использовать класс CreateView и “сотоварищей” чтобы выполнить необходимую работу. Обратите внимание, что мы лишь создаем конфигурацию для CBV; нам не нужно писать никакого кода, реализующего логику:
# views.py
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy
from myapp.models import Author
class AuthorCreate(CreateView):
model = Author
fields =
class AuthorUpdate(UpdateView):
model = Author
fields =
class AuthorDelete(DeleteView):
model = Author
success_url = reverse_lazy('author-list')
Примечание
Мы должны использовать здесь функцию reverse_lazy(), а не просто reverse, поскольку urls не “загружаются” при импорте файла.