为了账号安全,请及时绑定邮箱和手机立即绑定

如果字段为空,则不创建对象,而是重定向到不同的视图。我该怎么做呢?

如果字段为空,则不创建对象,而是重定向到不同的视图。我该怎么做呢?

桃花长相依 2023-10-11 15:49:11
我有一个媒体模型和一个产品模型。当用户创建产品时,他们首先上传图片,然后,他们会被转发到产品详细信息页面,在那里他们可以编辑产品属性。这工作正常,但是如果用户不上传图片,我希望程序跳过创建媒体对象并直接进入产品详细信息页面。我尝试从 form_valid() 返回一个 reverse() 函数,但这不起作用,所以我想知道是否有人知道这是为什么以及如何解决这个问题?我目前的代码:class ProductMediaCreate(generic.CreateView):    model = ProductMedia    fields = ('media',)    template_name = 'media/media_create.html'    def form_valid(self, form):        product_obj = Product.objects.create()                if not form.instance.media:            return reverse('product_detail', kwargs={'pk': product_obj.pk})        form.instance.product = product_obj        return super().form_valid(form)    def get_success_url(self):        return reverse('product_detail', kwargs={'pk': self.product.pk})然而,这会产生错误:'str' object has no attribute 'get'当我在没有图片的情况下在 CreateView 上提交表单时。编辑:不确定这是否有帮助,但是在错误的回溯之后,错误的来源在行上的 clickjacking.py 中指出:(if response.get('X-Frame-Options') is not None: 我不确定这意味着什么)预先感谢您的任何帮助!
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

我想到了!

您不能直接在 form_valid 中使用reverse(),因为 form_valid() 正在等待响应,因此您必须在反向函数周围使用 HttpResponseRedirect() 。

IE

if not form.instance.media:
    return HttpResponseRedirect(reverse('product_detail', kwargs={'pk': product_obj.pk}))

要获取 HttpResponseRedirect,请从 django.http 导入它:

from django.http import HttpResponseRedirect

希望对将来的人有所帮助!:)


查看完整回答
反对 回复 2023-10-11
  • 1 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信