django类基于通用视图“CreateView”独特的slug错误handeling

时间:2015-04-30 15:30:05

标签: python django

所以我有一个CreateView,它按照我想要的方式工作99%。如果用户在整数字段中输入一个字母,它会告诉用户输入一个数字,如果用户将所需字段留空,则告诉他们需要填写它。这一切都很好,CreateView为我处理错误。但是,由于显而易见的原因,我不会让用户创建slug字段,这是通过将日期和其他两个字段组合在一起并将它们重击来自动创建的。如果用户尝试创建一个不会产生唯一slug的记录,那么表单无效,但CreateView不会给出任何建设性的反馈(除非你处于调试模式,然后你得到UNIQUE约束失败)。

如果我将下面的代码添加到我的CreateView中,那么我需要重新定义CreateView之前处理得非常好的所有错误响应。

def form_invalid(self, form):
    return HttpResponse(#define stuff here)

有没有办法让CreateView正常处理无效表单(好像我没有def form_invalid(self, form):),除非有slug冲突?

1 个答案:

答案 0 :(得分:1)

您可以通过在form_invalid的覆盖范围内调用父级的form_invalid类版本来实现此目的。

示例:

class MyCreateView(CreateView):
    def form_invalid(self, form):
        if my_condition:  # Check whatever you want
            return HttpResponse('reason it failed')
        else:  # Or call the parent class version
            return super(MyCreateView, self).form_invalid(form)