我正在实现以下 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
同样,数据已成功存入数据库,但保存表单后重定向根本不起作用。有人可以帮助我吗?
问题是你的
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')