1
我可以在变更表单管理页面上插入(跛脚)静态文本,但我真的很喜欢它使用当前编辑对象的上下文!定制django admin ChangeForm模板/添加自定义内容
例如,我想在MyObject的格式上改变一个URL来包含来自一个ForeignKey连接对象的ID(obj
)作为链接。
我的管理对象:
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}}
通话显然是行不通的,但我想类似的规定。
如何从当前对象中将动态上下文插入到admin更改表单中?
这可能是有益的,但不能告诉。 'get_dynamic_info()'假设只是任意地执行数据库查询?这不是我想要的。我只想要那些显然必须可用的对象的数据,因为它是一个改变形式(意味着对象已经在数据库中)。另外,它将作为'{{osm_data}}'在模板中访问?不清楚你在这里建议的实际解决方案。 – lollercoaster
您可以访问正在呈现更改视图的'object_id'。因此,您可以查询该对象并获取其相关字段ID并将其作为'extra_context'发送。是的,你可以在模板中使用这些额外的上下文作为'{{osm_data}}'。 – Sagar
可以确认此作品,谢谢! – lollercoaster