Python ValueError:为UUIDField使用Django模型时,格式错误的十六进制UUID字符串

Python ValueError:为UUIDField使用Django模型时,格式错误的十六进制UUID字符串,python,django,Python,Django,我使用的是Django==1.9,我的模型.py看起来像 from __future__ import unicode_literals from django.db import models import uuid # Create your models here. class Status(models.Model): id = models.UUIDField(default=uuid.uuid4, editable=False) comment = models.

我使用的是
Django==1.9
,我的
模型.py
看起来像

from __future__ import unicode_literals

from django.db import models
import uuid

# Create your models here.
class Status(models.Model):
    id = models.UUIDField(default=uuid.uuid4, editable=False)
    comment = models.CharField(max_length=1000, unique=True)
当我运行
python manage.py migrate
时,它会抛出

  File "C:\Python27\Lib\uuid.py", line 136, in __init__
    raise ValueError('badly formed hexadecimal UUID string')
ValueError: badly formed hexadecimal UUID string
注意,数据库表尚未在
sqlite3.db
中创建,因此对于堆栈溢出类似问题的其他答案建议您删除数据库(如果存在),然后进行迁移。但就我而言,数据库目前还不存在

我尝试了大多数堆栈溢出的答案,一些人建议使用
default=''
,一些人说
default=uuid.uuid4()
等等。对我来说没有任何效果,这就是我创建新问题的原因。所以,请不要只是盲目地看标题来链接答案

我刚才提及的答案如下:


如果答案是使用
default=uuid.uuid4()
,为什么要使用
default=uuid.uuid4
?函数对象和通过调用函数得到的UUID对象之间有很大的区别。(虽然在我看来,
default=uuid.uuid4()
真的不太可能是正确的,因为这只会给每个人相同的uuid…)看看,
uuid.uuid4
不仅是正确的,如果不指定一个,它是默认值。所以,除非你的Django安装完全崩溃,否则我怀疑你在其他地方做错了什么。你能给我们一个重现问题的方法吗?@abarnert:如果你使用
uuid.uuid4()
,那么它就不起作用了。即使是
makemigrations
在这种情况下也会失败我提到它的唯一原因是你的问题说很多堆栈溢出的答案都说要这样做。我甚至说这似乎不太可能是真的。但是是你说的,除了你没有人能证实,因为你没有告诉我们答案或者给我们任何链接。