Python Django-使用validate_unique作为admin更新对象
这是我的问题:作为管理员,如果我试图从django管理员站点编辑/更新“somenumber”,我会得到ValidationErrorPython Django-使用validate_unique作为admin更新对象,python,django,django-models,django-admin,pycharm,Python,Django,Django Models,Django Admin,Pycharm,这是我的问题:作为管理员,如果我试图从django管理员站点编辑/更新“somenumber”,我会得到ValidationError 我正在使用PyCharm不覆盖验证\u unique它是而不是供用户覆盖的钩子。这是Django使用和实现的方法,您不应该触碰它 使字段唯一的正确方法是在字段定义中添加unique=True: class MyObject(models.Model):`` id = models.Charfield(max_length=30, primary_key=
我正在使用PyCharm不覆盖
验证\u unique
它是而不是供用户覆盖的钩子。这是Django使用和实现的方法,您不应该触碰它
使字段唯一的正确方法是在字段定义中添加unique=True
:
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')})
这将在数据库级别强制执行唯一性,当您尝试将非唯一值保存到
somenumber
时,原始的validate\u unique
方法将自动引发ValidationError
ValidationError
不是有用的信息,你需要编辑你的问题来告诉我们错误是什么,也许还可以发布完整的stacktrace。我已经告诉过你问题出在哪里,也许我没有解释自己。从管理网站,我想:-使用validate unique创建一个新对象,该对象停止使用相同字段创建另一个对象(使用validate_unique,在本例中为“id”)-通过编辑“somenumber”通过管理站点更新同一对象我开始认为我必须重写clean()并在某处调用它…我认为您得到的是同一个对象,您应该更改筛选器以避免在更新时搜索自身。@AngelCruijff更新时如何更改筛选器?
class MyObject(models.Model):
somenumber = IntegerField(default=0, unique=True)