Python 自定义django管理变更表单模板/添加自定义内容
我可以在ChangeFormAdmin页面上插入(lame)静态文本,但我真的希望它使用当前正在编辑的对象的上下文 例如,我想在MyObject上设置一个URL格式,以包含ForeignKey连接对象(Python 自定义django管理变更表单模板/添加自定义内容,python,django,django-admin,Python,Django,Django Admin,我可以在ChangeFormAdmin页面上插入(lame)静态文本,但我真的希望它使用当前正在编辑的对象的上下文 例如,我想在MyObject上设置一个URL格式,以包含ForeignKey连接对象(obj)的ID作为链接 我的管理对象: class MyObjectChangeForm(forms.ModelForm): class Meta: model = MyObject fields = ('field1', 'obj',) class My
obj
)的ID作为链接
我的管理对象:
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)
我的模板模板/admin/My\u change\u 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 %}
{%extends“admin/change\u form.html”%}
{%block form_top%}
{{lame_static_text}}
{%endblock%}
{{adminform.data.obj.id}
调用显然不起作用,但我希望类似的东西
如何将当前对象的动态上下文插入管理更改表单?在中添加额外的上下文
我相信您寻找的神奇变量是“original”,它包含更改表单正在编辑的python对象:
<a href="http://example.com/abc/{{ original.id }}?"/>View Website</a>
这可能会有帮助,但无法判断。get\u dynamic\u info()?那不是我想要的。我只想要所讨论对象的数据(显然)必须以某种方式可用,因为它是一个变更表单(意味着该对象已经在数据库中)。此外,它将作为{{osm_data}}
在模板中访问?不清楚您在此建议的实际解决方案。您可以访问更改视图正在为其渲染的对象\u id
。因此,您可以查询该对象并获取其相关字段id,并将其作为extra\u context
发送。是的,您可以在模板中使用这些额外的上下文作为{{{osm_data}}
。天哪,您节省了我这么多时间。这是人们需要的答案。
<a href="http://example.com/abc/{{ original.id }}?"/>View Website</a>