我正在使用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)
任何解决方案??
答案 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)。