【发布时间】:2021-03-14 14:54:09
【问题描述】:
这是 Python 3.8 和 Django 3.1.3
我有一个具有唯一字段的模型
class SomeModel(models.Model):
name = models.CharField(max_length=200, unique=True)
如果存在 UNIQUE 约束违规,我正在寻找一种自动更改字段值的方法
如果我创建了一个名为“kevin”的新实例,而另一个同名的实例已经存在“kevin”,它会在调用 save() 时更改新实例的名称并带有后缀
例如:数据库为空
>>> foo = SomeModel()
>>> foo.name = "kevin"
>>> foo.save()
# again
>>> foo = SomeModel()
>>> foo.name = "kevin"
>>> foo.save()
# and again
>>> foo = SomeModel()
>>> foo.name = "kevin"
>>> foo.save()
>>> for foo in SomeModel.objects.all():
>>> print(foo.name)
kevin
kevin_01
kevin_02
没有找到执行此操作的方法,我想我必须重写保存方法并捕获唯一约束错误才能执行此操作。有任何想法吗 ? 谢谢
【问题讨论】:
标签: python django django-models orm