【问题标题】:How to imitate new app in Django admin如何在 Django admin 中模仿新应用程序
【发布时间】:2018-12-26 00:01:28
【问题描述】:

我的 Django 应用程序中的模型很少。如何在管理界面中模仿另一个应用为我的一个模型创建应用部分?

【问题讨论】:

  • 模仿是什么意思?
  • 当您创建新应用并在其中注册模型时,您会在管理面板中看到此应用的新部分。我想在不创建新应用的情况下创建新部分
  • 使用 admin.site.register(your model) 注册您的模型。 docs.djangoproject.com/en/2.0/ref/contrib/admin/…

标签: django django-admin


【解决方案1】:

AdminSite 负责创建索引页面。流程是这样的:

  1. _build_app_dict 构建一个字典,其中包含在给定站点注册的所有模型的各种数据(包括 model._meta.app_label)
  2. get_app_list 将该字典转换为按应用标签和模型(详细)名称排序的列表
  3. index 方法/视图将该 app_list 添加到模板上下文中
  4. 模板(由 AdminSite.index_template 指定)被渲染

如果您只想改变索引页面的外观(比如添加一个“假”应用程序来对您的模型进行不同的分组),创建一个custom AdminSite 并挂钩到上述四个步骤中的任何一个可能是比弄乱内部应用注册表更清洁的方法。

【讨论】:

    【解决方案2】:

    您可以尝试更改要移动的模型的app_label

    class Meta:
        app_label = 'new_section'
    

    只需确保相应地调整 FK 和 M2M 字段即可。
    this answer

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 2011-10-17
      • 2017-10-15
      • 2023-04-03
      • 1970-01-01
      • 2013-02-06
      • 2014-09-13
      • 1970-01-01
      • 2012-07-02
      相关资源
      最近更新 更多