modeladmin实用程序
django-modeladmin-utils的Python项目详细描述
modeladmin实用程序
一个有用的Django ^ {Tt1}$MIXIN和模板的集合 标签
安装
pip install Django-modeladmin-utils
简介
有时,与指定对象的关系可能包含许多 反对。在这种情况下,将呈现一个大型的内联列表,其中 可能不需要。
用法
简单地向父模型ADMIN添加LimITILNELSADMIXIN,并指定 要在属性limit_inlines中限制的内联线。号码 显示的条目数由^{tt3}确定$ (默认为15)。
from modeladmin_utils.mixins import LimitInlinesAdminMixin # ... class SomeParentModelAdmin(LimitInlinesAdminMixin, admin.ModelAdmin): inlines = (MyRelationInline, AnotherRelativeInline) limit_inlines = (MyRelationInline, )
模板:链接到“全部显示”条目
除了限制之外,您还可以在 内联容器到相关对象变更列表的链接,按筛选 仅相关条目。这可以通过使用^{tt4}来实现$ 在这个包裹里提供。重写的管理模板 相关的内联/s很简单:
{% link_to_changelist inline_admin_formset original as changelist_url %} {% if changelist_url %} ({{inline_admin_formset.formset.limited_count}} / {{inline_admin_formset.formset.total_count}} displayed - <a href="{{ changelist_url }}">{% trans "Detailed View" %}</a>) {% endif %}
注释
若要使用templatetag,必须将应用程序添加到 settings.INSTALLED_APPS:
INSTALLED_APPS += ( 'modeladmin_utils', )
堆栈式和表格式内联线的修改模板示例, 基于django 1.4模板,在这个包中提供(在 templates/admin/edit_inlines)。但是,这些不是由 默认设置是为了避免混淆,使用它们只需复制模板 over、modify(请参见下面的特定说明)和set inline template属性,例如:
class MyRelationInline(admin.TabularInline): template = 'path_to_your/templates/admin/edit_inlines/tabular.html'
而变更列表的相关模型是自动的 已确定,您还可以通过指定 内联上的unlimited_changelist_model属性。这是 如果内联用于“直通模型”,但链接应指向 目标模型。
class MyRelationInline(admin.TabularInline): unlimited_changelist_model = 'myapp.MyTargetModel'
自定义模板示例
若要将链接添加到堆叠模板,请复制到原始模板上 templates/admin/edit_inline/stacked.py,并将上面的代码放在 div.tabular-header类似于so(注意,我使用的是 django-grappelli此处为模板:
{% load modeladmin_links %} {# ... #} {% link_to_changelist inline_admin_formset original as changelist_url %} <div class="tabular-header"> <h2 class="grp-collapse-handler"> {% if inline_admin_formset.opts.title %}{{ inline_admin_formset.opts.title }}{% else %}{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}{% endif %} {% if changelist_url %} ({{inline_admin_formset.formset.limited_count}} / {{inline_admin_formset.formset.total_count}} displayed - <a href="{{ changelist_url }}">{% trans "Detailed View" %}</a>) {% endif %} </h2> {# ... #}
对于堆叠,请使用模板模板/admin/edit_inline/stacked.py:
{% load modeladmin_links %} {# ... #} <h2 class="grp-collapse-handler"> {% if inline_admin_formset.opts.title %} {{ inline_admin_formset.opts.title }} {% else %} {{ inline_admin_formset.opts.verbose_name_plural|capfirst }} {% endif %} {% if changelist_url %} ({{inline_admin_formset.formset.limited_count}} / {{inline_admin_formset.formset.total_count}} displayed - <a href="{{ changelist_url }}">{% trans "Detailed View" %}</a>) {% endif %} </h2> {# ... #}
简介
Django允许定义GenericForeignKey,但不允许 很容易通过它们(连接)进行查询。因此,做一些类似于搜索的事情 “通过”一个通用的fk不是很简单。
进入通用搜索混合程序!
此MIXIN重写MultAdmin .GET-SexCHyl结果方法 允许搜索泛型关系字段。
为了快速设置,只需使用GenericForeignKey字段名作为 “搜索字段”中的前缀。
例如:对于名为“related_to”的字段,可以使用以下命令: 搜索字段=(“相关名称”、“相关电子邮件”…)
或者,您可以在modeladmin中定义“related_search_mapping” 显式定义泛型字段的对象ID和允许的内容 类型(用于限制内容类型-更快的查询)。
示例(请参见admin.py中的更多内容)
# find out pk and ctype fields using the virtual field related_search_mapping = { 'my_generic_fkey': {} } # the manual, "define everything" way related_search_mapping = { 'my_generic_fkey': { 'object_id': 'related_pk_field', 'ctypes': 'content_type_field' } }
注释
- 所需django>;1.6
- 目前,假设相关对象的id在所有模型中都是唯一的
注意:与较新的django版本一起过时
简介
在django 1.6推出之前 ModelAdmin.preserve_filters django admin的行为如下:
- 使用搜索/筛选功能筛选变更列表
- 单击其中一个结果条目
- 编辑并保存结果
- Django将您重定向到更改列表,而不存储筛选器