gpt4 book ai didi

python - Django:如何正确处理自定义 form_valid() 的错误

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:58 25 4
gpt4 key购买 nike

自定义 form_valid() 函数内处理错误的“正确”方法是什么?

例如我有一个定义了 form_valid() 方法的 View :

class StorageItemMergeView(FormView):
# ...

def form_valid(self, form):
si = StorageItem.objects.get(pk=self.kwargs["pk"])
si.part.merge_storage_items(si, StorageItem.objects.get(
pk=self.request.POST["storageitem1"]
)
)
return super(StorageItemMergeView, self).form_valid(form)

其形式非常简单:

class MergeStorageItemsForm(forms.Form):
storageitem1 = forms.ModelChoiceField(queryset=StorageItem.objects.all())

事实上,用户可能会填写语法正确的数据,而这些数据在调用 merge_storage_items() 时会失败。

在我的例子中,merge_storage_items() 能够返回 True 或 False ——但是在方法调用失败的情况下如何正确 react ?

最佳答案

正确的做法是根本不要在form_valid中这样做。那不是它的目的。该方法称为表单已验证的方法,负责保存和重定向。

执行此操作的正确位置是在表单类本身中,您可以在其中重写 clean 方法,并在检查失败时引发 forms.ValidationError

关于python - Django:如何正确处理自定义 form_valid() 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28612634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com