【问题标题】:Exclude UUID field from Django admin从 Django 管理员中排除 UUID 字段
【发布时间】:2015-12-21 16:14:50
【问题描述】:

我在 Django 1.6 中有一个从 django-uuidfield v0.4.0 导入的 UUID 字段。我无法更改 Django 版本。

id = uuidfield.UIIDField()

一切都很好,除了尝试在管理员中查看模型时,显示此错误:

需要一个字符缓冲区对象

问题似乎出在这一行:

 return mark_safe(force_text(value).translate(_js_escapes)) 

来自站点包/django/utils/functional.py

我已尝试通过专门排除此字段来将其从管理员视图中排除

exclude=('id',)

并通过明确包含一个不同的字段,希望它只处理该字段而不是 ID 字段(如文档所示)。

include = ('email',)

但错误仍然存​​在。似乎管理站点无论如何都在检查这些字段,而忽略了管理设置中的任何设置。我还在模型定义中设置了“editable=False”,对 id 字段没有影响。

我不需要从管理员屏幕以任何方式操作或编辑此字段,只需将其隐藏,以免管理员崩溃。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    我不确定你是从哪里导入的,但 Django 自 1.7 版以来已经包含了自己的 UUIDField。您当然应该使用它。

    【讨论】:

    • 看起来它来自 django-uuidfield==0.4.0,我将无法为这项工作更新到 1.7,这显然是理想的。
    • 我实际上并不关心该字段或它的价值,我只是想排除它导致管理员崩溃。无论如何它都会从管理员设置中排除,因为它没有必要
    • 仅供参考实际上是从 1.8 开始,而不是 1.7