Django类基础泛型视图“CreateView”唯一标识符错误处理

2024-10-01 09:19:32 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个CreateView,它99%都是我想要的。如果用户在一个整数字段中输入一个字母,它会告诉用户输入一个数字;如果用户将一个必填字段留空,它会告诉用户需要填写。这很好,CreateView为我处理错误。但是,出于明显的原因,我不允许用户创建slug字段,这是通过将日期和其他两个字段合并并加上段塞来自动创建的。如果用户试图创建一个不会产生唯一slug的记录,那么表单是无效的,但是CreateView不会给出任何有建设性的反馈(除非您处于调试模式,否则您将获得唯一约束失败)。在

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

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

有没有一种方法可以让CreateView正常处理无效的表单(好像我没有def form_invalid(self, form):)除非有slug冲突?在


Tags: 用户selfform表单def字母记录原因
1条回答
网友
1楼 · 发布于 2024-10-01 09:19:32

可以通过在重写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)

相关问题 更多 >