mpe*_*pen 4 django constraints unique relational-database
我在我的网站上发布双重帖有些问题.我认为所有相关领域的简单唯一约束将解决数据库级别的问题,但它只会为用户生成一个讨厌的错误页面.有没有办法可以把它变成漂亮的形式错误呢?喜欢non_field_error?或者我应该采取什么方法?
tux*_*21b 11
也许这样的事情可以帮助你:
class YourForm(forms.Form):
# Everything as before.
...
def clean(self):
cleaned_data = self.cleaned_data
your_unique_key = cleaned_data['your_unique_key']
if your_unique_key and YourModel.objects.get(your_unique_key=your_unique_key):
raise forms.ValidationError("not unique")
# Always return the full collection of cleaned data.
return cleaned_data
Run Code Online (Sandbox Code Playgroud)
该clean()方法将允许您访问表单的所有字段,如果您具有组合的唯一键,则该字段可能很有用.否则(短得多)clean_your_unique_key()可能更适合你.
请注意,在极少数情况下(竞争条件),表单验证可能不会报告重复的条目(但它当然是由数据库引擎报告的).但是对于大多数应用程序来说,提供的示例将更容易,更易于维护,所以我仍然推荐这种方法.
| 归档时间: |
|
| 查看次数: |
2570 次 |
| 最近记录: |