Fer*_*ola 2 django django-class-based-views
我有一个表单类视图,当用户填写表单时,它会创建一个对象(目录中的产品)。该对象是在视图的 form_valid 方法内创建的。我希望视图通过 FormView 的“success_url”属性重定向到创建的对象 url(产品 url)。
问题是我不知道如何在 success_url 方法中指定该 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)
Run Code Online (Sandbox Code Playgroud)
那么在类级别,没有product,所以你不能product在 中使用success_url。
您可以做的是覆盖get_success_url,从而确定 URL,例如:
from django.urls import reverse
class ImageUpload(FormView):
def get_success_url(self):
return reverse('images:product', kwargs={'id': self.product.id })
def form_valid(self, form):
self.product = Product.objects.create(user=self.request.user, title=title)
return super(ImageUpload, self).form_valid(form)Run Code Online (Sandbox Code Playgroud)
事实上,默认情况下会get_success_url获取success_url属性并解析它。
| 归档时间: |
|
| 查看次数: |
1833 次 |
| 最近记录: |