django admin中UUID字段的问题

时间:2015-04-08 07:26:20

标签: django django-models django-admin uuid

我正在使用UUID字段作为我的模型的主键,当我从视图中向模型添加数据时,eveything工作正常但是当我尝试从管理员添加一行时,我认为它给出了空字符串的错误。 / p>

DataError at /admin/appname/modelname/add/
invalid input syntax for uuid: ""
LINE 1: ...053380+00:00' WHERE "tablename"."field" = ''

我的UUID字段看起来像

pk_field = UUIDField(auto=True, primary_key=True, serialize=True, hyphenate=True)

任何解决方案??

1 个答案:

答案 0 :(得分:1)

您可以使用原生 Django 1.8 UUIDField。如果您只是希望始终将非连字和序列化返回到字符串python对象,您只需子类化UUIDField并覆盖from_db_value,如下所示:

class CustomUUIDField(models.UUIDField):

    def from_db_value(self, value, expression, connection, context):
        if isinstance(value, uuid.UUID):
            return value.hex
        else:
            return value

然后使用您的CustomUUIDField代替本机Django的UUIDField。请记住:这只适用于Django 1.8,而不是之前的版本(也不是Django 1.7)。