Django - 使用validate_unique以admin身份更新对象

时间:2015-11-24 23:01:58

标签: python django django-models django-admin pycharm

class MyObject(models.Model):``
    id = models.Charfield(max_length=30, primary_key=True)
    somenumber = IntegerField(default=0)

    def validate_unique(self, exclude=None):
        if MyObject.objects.filter(id=self.id).exists():
        raise ValidationError({'id': _('CUSTOM ERROR')})

这是我的问题:作为管理员,如果我尝试从django管理站点编辑/更新“somenumber”,我会得到ValidationError

我正在使用PyCharm

1 个答案:

答案 0 :(得分:0)

不要覆盖validate_unique 是一个供用户覆盖的钩子。这是Django使用和实现的方法,你不应该触摸它。

使字段唯一的正确方法是将unique=True添加到字段定义中:

class MyObject(models.Model):
    somenumber = IntegerField(default=0, unique=True)

这将强制执行数据库级别的唯一性,当您尝试将非唯一值保存到validate_unique时,原始ValidationError方法将自动引发somenumber