Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模型字段unique=True,default=function_Python_Django_Django Models_Unique - Fatal编程技术网

Python Django模型字段unique=True,default=function

Python Django模型字段unique=True,default=function,python,django,django-models,unique,Python,Django,Django Models,Unique,我有一个这样的模型 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

我有一个这样的模型

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返回数据库中已经存在的代码,django会再次调用该函数直到找到一个不存在的代码吗?还是会出错?

您的型号中的代码字段是唯一的。如果您试图用已经存在的代码创建另一个条目,那么python将引发
IntegrityError:UNIQUE constraint failed
异常

您可以通过从
create\u invite\u code
函数返回一个常量字符串来测试它。比如说,

def create_invite_code():
  return 'test'

第一个条目将是唯一的,但在第二个调用中会引发异常。

正如人们在这里所说的,它将引发“unique constraint failed”完整性错误。这可能会发生,因为您没有进行任何唯一性检查

我推荐大卫·克莱默的《德扬戈·乌伊菲尔德》。它为您处理所有验证


Python将引发
整数错误:唯一约束失败
。在你的
create\u invite\u code
函数中,返回常量字符串并自己测试。好的,我明白了,你为什么不将此作为答案发布,我会更正它。我不担心uuid字段id,因为这篇文章,我希望随机8个字母的代码是安全的。这是django uuidfield不会为我做的。