所以我有一个 CreateView,它 99% 都能按照我想要的方式工作。如果用户在整数字段中输入字母,它会告诉用户输入数字,如果用户将必填字段留空,它会告诉他们需要填写该字段。这一切都很棒,CreateView 会为我处理错误。然而,出于显而易见的原因,我不允许用户创建 slug 字段,这是通过将日期和其他两个字段组合起来并进行 slug 化来自动创建的。如果用户尝试创建不会导致唯一的 slug 的记录,则该表单无效,但 CreateView 不会提供任何建设性反馈(除非您处于 Debug模式,否则 UNIQUE 约束失败)。
如果我将下面的代码添加到我的 CreateView 中,那么我需要重新定义 CreateView 之前处理得很好的所有错误响应。
def form_invalid(self, form):
return HttpResponse(#define stuff here)
有没有办法让 CreateView 正常处理无效表单(就好像我没有 def form_invalid(self, form):
),除非存在 slug 冲突?
最佳答案
您可以通过在重写 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)
关于python - 基于 django 类的通用 View "CreateView"独特的 slug 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29971846/