Django显示两个分离方法的错误消息?

时间:2017-02-25 12:17:00

标签: python django

我有一个定义如下的Django模型:

class Category(models.Model):
    name = models.CharField(max_length=100, unique=True)
    slug = models.SlugField(unique=True)

虽然两者都被定义为uniqe,但是django admin允许我添加“python”,“Python”,“PYTHON”等类别。我知道这是默认行为。

为了防止这种情况,我在Category模型中创建了一个clean()方法,如下所示:

def clean(self, *args, **kwargs):
    from django.core.exceptions import ValidationError
    slug = slugify(self.name.lower())
    r = Category.objects.filter(slug=slug)
    print("size")
    print(r.count())
    if r:
        raise ValidationError("Category with this name already exists. Try again with a new name.")
    self.slug = slug
    super(Category, self).clean(*args, **kwargs)

适用于大多数情况。但是,假设数据库已经有Python类别,如果我再次尝试添加Python,它会向我显示两个错误,一个来自clean()方法,另一个来自validate_unique()方法。这是它的外观。

enter image description here

我想只显示一条消息是否有办法阻止它。有没有办法覆盖这种行为或其他东西。提前谢谢。

1 个答案:

答案 0 :(得分:1)

来自docs

  

要为特定字段分配例外,请使用字典实例化ValidationError,其中键是字段名称。

if r:
    raise ValidationError({'name': ["Category with this name already exists.",]})