Django CreateView 未重定向到成功网址

问题描述 投票:0回答:1

我正在实现以下 CreateView,它应该在将产品添加到我的应用程序后重定向到产品列表。提交表单后,产品已成功添加,但用户未重定向。相反,会加载相同的产品表单。

class ProductCreate(CreateView):
    model = Product
    fields = '__all__'
    template_name = 'catalog/product/add_product.html'

    def form_valid(self, form):
        form.instance.category = get_object_or_404(Category, form.instance.category)
        return super(ProductCreate, self).form_valid(form)

    def get_success_url(self):
        return reverse_lazy('product_detail', kwargs={'id': self.object.pk, 'slug': self.object.slug})

    def get_context_data(self, **kwargs):
        context = super(ProductCreate, self).get_context_data(**kwargs)
        context['customers'] = Customer.objects.filter(company=self.request.user.profile.company)
        context['categories'] = Category.objects.filter(company=self.request.user.profile.company)
        return context

同样,数据已成功存入数据库,但保存表单后重定向根本不起作用。有人可以帮助我吗?

django django-views django-forms
1个回答
0
投票

问题是你的

get_success_url

def get_success_url(self):
    return reverse_lazy('product_detail', kwargs={'id': self.object.pk, 'slug': self.object.slug})

您正在重定向回产品详细信息页面,您应该重定向到产品列表页面,假设您的网址名为

product_list
,请检查您的urls.py,如果我的假设错误,请使用正确的。

def get_success_url(self):
    return reverse_lazy('product_list')
© www.soinside.com 2019 - 2024. All rights reserved.