所以我有一个看起来像这样的模型
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返回db中已经存在的代码会发生什么,django会再次调用该函数,直到它找到一个不存在的函数?或者会出错?
答案 0 :(得分:4)
模型InviteCodes
中的代码字段是唯一字段。如果您尝试使用现有代码创建另一个条目,则python将引发IntegrityError: UNIQUE constraint failed
异常。
您可以通过从create_invite_code
函数返回一个常量字符串来测试它。例如,
def create_invite_code():
return 'test'
第一个条目将是唯一的,但在第二个条目中将引发异常。
答案 1 :(得分:1)
正如人们在这里所说的那样,它会引发“UNIQUE约束失败”的完整性错误。可能会发生这种情况,因为您没有对唯一性进行任何检查。
我会推荐David Cramer的django-uuidfield。它为您处理所有验证。