Success_url из созданного URL объекта в FormView - PullRequest
0 голосов
/ 07 октября 2018

У меня есть представление класса формы, которое создает объект (продукт в каталоге), когда пользователь заполняет форму.Объект создается внутри метода form_valid представления.Я хочу, чтобы представление перенаправляло на созданный объект URL (URL продукта) через атрибут "success_url" FormView.

Проблема в том, что я не знаю, как указать этот URL-адрес в методе success_url, поскольку объект все еще не создается при определении самого класса.Я пробовал с reverse_lazy или методом get_absolute_url () объекта, но та же проблема сохраняется.

class ImageUpload(FormView):
 [...]
 success_url = reverse_lazy('images:product', kwargs={'id': product.id })
 [...]
 def form_valid(self, form):
  [...]
  self.product = Product.objects.create(
        user=self.request.user, title=title)

1 Ответ

0 голосов
/ 07 октября 2018

Ну, на уровне класса нет product, поэтому вы не можете использовать product в success_url.

То, что вы можете сделать, это переопределитьget_success_url, и, таким образом, определите URL, например:

from django.urls import <b>reverse</b>

class ImageUpload(FormView):

    def get_success_url(self):
        return <b>reverse('images:product', kwargs={'id': self.product.id })</b>

    def form_valid(self, form):
        self.product = Product.objects.create(user=self.request.user, title=title)
        return super(ImageUpload, self).form_valid(form)

Фактически по умолчанию get_success_url выбирает атрибут success_url и разрешает его.

...