绕过从 django 模型中的唯一字段获取的完整性错误

问题描述 投票:0回答:1

我想要在数据库级别生成一个唯一的字段。 unique=True 的工作方式是,如果它在数据库中看到重复值,则会引发错误。但我不希望这样,我希望它只是生成一个新的唯一编号而不是引发错误。

这是为用户提供帐号的模型,任何帮助将不胜感激

class Account(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    account_number = ShortUUIDField(unique=True,length=10, max_length=25, prefix="217", alphabet="1234567890")

python django django-models
1个回答
0
投票

您可以尝试导入 uuid 并在 account_number 字段中更改

default=uuid.uuid4
删除此代码
length=10, max_length=25, prefix="217", alphabet="1234567890"

可能看起来像这样

account_number = ShortUUIDField(unique=True, default=uuid.uuid4)

将字段更改为

models.CharField(max_length=255, default=DEFINITIONNAME, unique=True)

并创建返回账号的定义 但在这里您还需要创建某种验证器来检查帐号是否存在

© www.soinside.com 2019 - 2024. All rights reserved.