小编Lau*_*MET的帖子

Django模型管理保存方法中的唯一约束错误

这是Python 3.8Django 3.1.3

我有一个具有独特领域的模型

class SomeModel(models.Model):
    name = models.CharField(max_length=200, unique=True)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种在存在唯一约束违规时自动更改字段值的方法。

如果我创建一个新实例,而name="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
Run Code Online (Sandbox Code Playgroud)

没有找到执行此操作的方法,我想我必须重写保存方法并捕获唯一约束错误才能执行此操作。有任何想法吗 ?谢谢

python django orm django-models

5
推荐指数
1
解决办法
6627
查看次数

标签 统计

django ×1

django-models ×1

orm ×1

python ×1