区分unique_together验证错误

时间:2011-12-08 14:34:53

标签: django django-models django-forms

我有一个unique_together约束的模型。

class Postit(models.Model):
    """Represents a single post-it."""
    x_axis = models.PositiveIntegerField(_('X axis'))
    y_axis = models.PositiveIntegerField(_('Y axis'))
    content = models.CharField(_('Content'), max_length=140, default='')

    class Meta:
        unique_together = ('x_axis', 'y_axis')

如果我使用表单创建新的帖子,则会检查约束,如果发生冲突,则会在non_field_errors属性中列出错误。细

我的问题是我想根据表单错误的类型启动不同的操作。如果存在唯一约束错误,我想要一个特定的操作,而对于任何其他类型的错误,我想要另一个操作。

鉴于我的应用程序将以多种语言翻译,如何因为约束或其他原因而知道表单是否无效?

1 个答案:

答案 0 :(得分:0)

请记住,如果您只想查看non_field_errors,就可以翻译您正在比较的字符串。

from django.utils.translation import ugettext_lazy as _
if _('Some error text') in self._errors['__all__']:
    # do something

但这并不是最优雅的解决方案。您最好的办法是在unique_togetherModel.clean中自行验证Model.validate_unique约束,并作出相应的回应。