【发布时间】:2014-01-05 00:18:59
【问题描述】:
我有以下使用 django-uuidfield 作为主键的模型类:
class FODType(models.Model):
id = UUIDField(auto=True, primary_key=True)
name = models.CharField(max_length=50)
从管理员那里,我尝试为此模型创建一个条目,但我收到以下错误:
DataError at /admin/Bleary/fodtype/add/ uuid 的输入语法无效: "" LINE 1: ... WHERE "Bleary_fodtype"."id" = ''
模型中的UUIDField 设置为如果未指定值则自动创建一个值,但在这种情况下,空字符串被指定为保存时主键的值。由于主键有一个值,它尝试进行更新而不是插入并失败。
我在这里做错了什么?
【问题讨论】:
-
你使用什么版本的 django 和 django-uuidfield?
-
Django==1.6.1 Markdown==2.3.1 Pygments==1.6 django-filter==0.7 django-uuidfield==0.4.0 djangorestframework==2.3.10 psycopg2==2.5.1
-
我在 fields.py 中为 uuidfield 破解了一个解决方案:如果调用它时将 value 参数设置为空字符串,则它不会创建新的 uuid。管理员用空字符串调用它。所以我更新了 get_db_prep_value 来解决这种情况。
-
奇怪的是你得到这个错误,我有相同的设置,它工作正常。你们有定制的管理类吗?
-
不确定这是否对您有帮助:stackoverflow.com/questions/7451465/…