我有一个带有CharField字段的模型,其默认值为uuid4:
f = models.CharField(default=uuid4, max_length=36, unique=True, blank=True)
这导致以下错误:
无法为模型成功创建字段'f' 'm':名称'UUID'未定义。
运行迁移命令!何我能解决这个问题吗?到目前为止我试过了:
......但问题仍然存在:(
PS。我知道我可以向南方指示自定义字段,但我认为我不使用自定义字段:P
答案 0 :(得分:11)
我解决了在模型模块中定义以下辅助函数的问题:
from uuid import uuid4
def generateUUID():
return str(uuid4())
然后:
f = models.CharField(default=generateUUID, max_length=36, unique=True, editable=False)
south将生成一个迁移文件(migrations.0001_initial),其生成的UUID如下:
default='5c88ff72-def3-4842-8d48-a75bb3240bb5'
这非常不开心......因为那个字符串是“静态的”,所以它必须使用辅助函数动态创建...无论如何在django的世界中似乎按预期工作...我添加了一些记录到数据库和为每个数据库生成一个新的UUID。然后,我通过向模型添加几个字段来尝试我的第一个模式迁移,并且它们已按预期添加到数据库表中。
答案 1 :(得分:4)
您还可以在迁移中导入UUID:
from uuid import UUID
答案 2 :(得分:0)
我只是从'node_modules'目录中删除了一个uuid目录。
然后我重新安装uuid,它起作用了。
我希望它能帮助你们<3