【发布时间】:2015-12-03 09:58:12
【问题描述】:
我有一个 Django 1.8 项目,在我的一个模型上,我正在使用新的 UUIDField,如下所示:
class MyModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
我还设置了我的 admin.py:
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
pass
当我加载管理页面尝试创建实例时,出现错误:
ValueError at /admin/core/mymodel/add/
badly formed hexadecimal UUID string
我可以从 Django shell (./manage.py shell) 创建一个没有问题的实例。但是,一旦我这样做了,即使在查看对象实例列表时,我也会在管理站点上遇到与以前相同的错误。
有什么想法吗?
【问题讨论】:
-
我们可以查看您的完整型号和网址吗?你用的是什么数据库?一个建议是检查数据库中 id 字段的大小,如果您之前运行过迁移。
-
不应该是:default=uuid.uuid4() 吗?
-
@Apero,不,
default参数的值应该是可调用的。在这种情况下,uuid.uuid4是正确的。 @GlynJackson - 我不确定为什么模型/ URL 的其余部分很重要。我将查看我的数据库以仔细检查大小是否正确。考虑到我可以毫无问题地通过 shell 创建/访问实例,我不认为这会成为问题。问题出在管理界面。
标签: python django django-models uuid