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
答案 0 :(得分:0)
不要覆盖validate_unique
。 不是一个供用户覆盖的钩子。这是Django使用和实现的方法,你不应该触摸它。
使字段唯一的正确方法是将unique=True
添加到字段定义中:
class MyObject(models.Model):
somenumber = IntegerField(default=0, unique=True)
这将强制执行数据库级别的唯一性,当您尝试将非唯一值保存到validate_unique
时,原始ValidationError
方法将自动引发somenumber
。