【问题标题】:Getting: invalid input syntax for uuid: "" when using django-uuidfield as primary key for a model获取:使用 django-uuidfield 作为模型的主键时,uuid 的输入语法无效:“”
【发布时间】: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 设置为如果未指定值则自动创建一个值,但在这种情况下,空字符串被指定为保存时主键的值。由于主键有一个值,它尝试进行更新而不是插入并失败。

我在这里做错了什么?

【问题讨论】:

  • 你使用什么版本的 djangodjango-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/…

标签: python django uuid


【解决方案1】:

请注意,django-UUDField 实现在用作主键时不会反映预期的行为,如果 save() 因任何原因失败,则该字段的值仍然存在,因此无法再使用检查 obj.pk 来检查对象是否被存储。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2020-04-13
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2016-01-12
    相关资源
    最近更新 更多