自定义django管理员ChangeForm模板/添加自定义内容 [英] customizing django admin ChangeForm template / adding custom content

查看:622
本文介绍了自定义django管理员ChangeForm模板/添加自定义内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以在更改表单管理页面上插入(层叠)静态文本,但我真的希望它使用当前正在编辑的对象的上下文!

I'm able to insert (lame) static text onto the change form admin page, but I'd really like it to use the context of the current object being edited!

例如,我想在MyObject更改的格式上设置一个URL,以包含来自ForeignKey连接的对象( obj )作为链接。

For instance, I want to format on the MyObject change form a URL to include the ID from a ForeignKey connected object (obj) as a link.

我的管理对象:

class MyObjectChangeForm(forms.ModelForm):
    class Meta:
        model = MyObject
        fields = ('field1', 'obj',)

class MyObjectAdmin(admin.ModelAdmin):
    form = MyObjectChangeForm
    list_display = ('field1', 'obj')
    def render_change_form(self, request, context, *args, **kwargs):
        self.change_form_template = 'admin/my_change_form.html'
        extra = {'lame_static_text': "something static",}
        context.update(extra)
        return super(MyObjectAdmin, self).render_change_form(request,
            context, *args, **kwargs)

我的模板 templates / admin / my_change_form.html

{% extends "admin/change_form.html" %}

{% block form_top %}
    {{ lame_static_text }}
    <a href="http://example.com/abc/{{ adminform.data.obj.id }}?"/>View Website</a>
{% endblock %}

{{adminform.data .obj.id}} 调用显然不起作用,但我希望沿此方式进行操作。

The {{adminform.data.obj.id}} call obviously doesn't work, but I'd like something along those lines.

如何将当前对象中的动态上下文插入到管理员更改表单中?

How do I insert dynamic context from the current object into the admin change form?

推荐答案

change_view

class MyObjectAdmin(admin.ModelAdmin):

# A template for a very customized change view:
change_form_template = 'admin/my_change_form.html'

def get_dynamic_info(self):
    # ...
    pass

def change_view(self, request, object_id, form_url='', extra_context=None):
    extra_context = extra_context or {}
    extra_context['osm_data'] = self.get_dynamic_info()
    return super(MyObjectAdmin, self).change_view(
        request, object_id, form_url, extra_context=extra_context,
    )

这篇关于自定义django管理员ChangeForm模板/添加自定义内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆