gpt4 book ai didi

django - Success_url 来自 FormView 中创建的对象 url

转载 作者:行者123 更新时间:2023-12-02 17:04:01 27 4
gpt4 key购买 nike

我有一个表单类 View ,它在用户填写表单时创建一个对象(目录中的产品)。该对象是在 View 的 form_valid 方法中创建的。我希望 View 通过 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)

最佳答案

在类级别,没有product,所以你不能在success_url中使用product

可以做的是覆盖 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 属性,并解析它。

关于django - Success_url 来自 FormView 中创建的对象 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52687318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com