在django中使用uuid作为id / pk打破管理页面

时间:2011-02-02 05:03:45

标签: django django-models django-admin django-forms

我正在使用django 1.0.4并且有3个型号:类别< -1-m->项目< -1-m->图像。

我最近将id / pk更改为uuid:

id = models.CharField(max_length=32, primary_key=True,
                      default=make_uuid, editable=False)
...
def make_uuid():
    return str(uuid.uuid4()).replace('-','')

在我开始使用uuid之后,项目的管理页面将不再允许我内联添加图像。即使没有任何错误,它也会给我一个表单验证错误。更进一步,如果一个项目有一个图像,我无法更改类别,它会给我以下错误:

KeyError at /admin/inventory/item/90965921681b4b69880b36bd716b0831/
id
...
/local/env/bfi2/lib/python2.6/site-packages/Django-1.0.4-py2.6.egg/django/forms/forms.py in _raw_value
 213. field = self.fields[fieldname] 

我认为这类似于以下错误:http://code.djangoproject.com/ticket/10992。理想情况下,我想避免升级django并只修补必要的文件。还有其他人遇到过这个问题吗?

感谢, 史蒂夫

1 个答案:

答案 0 :(得分:2)

我遇到过这样的问题但是他们用django-extensions UUID字段解决了 但我不能保证这个字段可以使用旧的django版本,它是在1.2.3