python - 如何在 django 管理工具的其他部分移动模型?

标签 python django django-admin

如何将模型移动到 Django 管理站点中的另一个部分?

在我的application模块models.py中,我的模型显示在管理工具中名为“后端”的部分中。我希望它们以“请求”名称显示在另一个部分中。

我尝试了以下方法

class TransportationRequest(models.Model):
   ...
   class Meta:
      app_label = _('Requests')
      db_table = 'backend_transportationrequest'

它是有效的,但现在我对 South 有问题,因为它正在创建迁移来删除所有这些模型。

最佳答案

您当前的问题是您尝试更改 app_labeldb_table,这最终会更改模型数据在数据库中的位置。默认情况下,数据库表生成为 [app_label]_[model_name] (在您的情况下为 backend_transportationrequest),因此当您修改这两个值时,South 会检测到模型已被删除并再次创建,即使实际情况并非如此。

Django migrations framework 1.7 中引入的应该修复了这个问题,因此它检测到模型已移动(而不是删除和创建)。您可能需要沿着与南边相同的路线伪造一次迁移,这可以通过 modifying the two mgirations it generates 来完成。实际上并不删除和创建表,而是重命名它们。

Django 目前不允许您轻松执行此操作,因为管理站点期望注册的每个应用程序都有一个唯一的 app_label。您可能有幸玩label property of your AppConfig ,但这是特别不推荐的,而且历史上已知这会导致严重的头痛。

一种可能是创建先前模型的克隆,并仅使用它向 Django 管理员注册应用程序。您需要创建 a proxy model使用自定义 app_labeldb_table。如果这不起作用(尽管应该起作用),另一个选择是将模型克隆为 a unmanaged model使用 app_labeldb_table

关于python - 如何在 django 管理工具的其他部分移动模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27592658/

相关文章:

Django 评论需要非 super 用户的删除操作

python - Django Admin 中的密码小部件和密码散列

python - 如何获取这段代码的标题和内容?

python - 将具有字节字符的字符串对象转换为字节对象?

python - matplotlib:带有圆形补丁的轴默认限制

django - 名称错误 : name 'TypeError' is not defined in Apache logs

python - 属性错误 : 'decimal.Decimal' object has no attribute 'decode'

django - 在 django admin 中使用外部链接来创建或更新

python - 管理员内联中的django自定义字段

python - Django-从子查询中注释多个字段