Django 模型字段 unique=True 和 default=function
Django model fields unique=True and default=function
所以我有一个看起来像这样的模型
def create_invite_code():
return str(uuid.uuid4())[0:8]
class InviteCodes(models.Model):
id = models.CharField(max_length = 36, primary_key = True, default=build_uuid)
code = models.CharField(max_length=8, unique=True, default=create_invite_code)
如果 create_invite_code returns 数据库中已经存在的代码会怎样,django 会再次调用该函数直到找到不存在的代码吗?还是会报错?
模型中的代码字段 InviteCodes
是一个唯一字段。如果您尝试使用已经存在的代码创建另一个条目,那么 python 将引发 IntegrityError: UNIQUE constraint failed
异常。
您可以通过从 create_invite_code
函数返回常量字符串来测试它。例如,
def create_invite_code():
return 'test'
第一个条目将是唯一的,但在第二次调用中将引发异常。
正如这里的人所说,它会引发 "UNIQUE constraint failed" 完整性错误。这可能会发生,因为您没有对唯一性进行任何检查。
我会推荐 David Cramer 的 django-uuidfield。它会为您处理所有验证。
所以我有一个看起来像这样的模型
def create_invite_code():
return str(uuid.uuid4())[0:8]
class InviteCodes(models.Model):
id = models.CharField(max_length = 36, primary_key = True, default=build_uuid)
code = models.CharField(max_length=8, unique=True, default=create_invite_code)
如果 create_invite_code returns 数据库中已经存在的代码会怎样,django 会再次调用该函数直到找到不存在的代码吗?还是会报错?
模型中的代码字段 InviteCodes
是一个唯一字段。如果您尝试使用已经存在的代码创建另一个条目,那么 python 将引发 IntegrityError: UNIQUE constraint failed
异常。
您可以通过从 create_invite_code
函数返回常量字符串来测试它。例如,
def create_invite_code():
return 'test'
第一个条目将是唯一的,但在第二次调用中将引发异常。
正如这里的人所说,它会引发 "UNIQUE constraint failed" 完整性错误。这可能会发生,因为您没有对唯一性进行任何检查。
我会推荐 David Cramer 的 django-uuidfield。它会为您处理所有验证。