我正在尝试覆盖change_form.html管理模板。当我在管理区域中输入数据时,它会帮助我从CSV文件中看到几行我输入的数据。
所以,在我的change_form.html副本中,我放置了:
<!-- First three lines of the csv we're parsing. -->
foo: {{ csv_app.csv_sample }}
<!-- end -->
在我的模型中(“csv_profile”):
def csv_sample(self):
return "foo"
我已经尝试将csv_app.csv_sample更改为parse_csv.csv_app.csv_sample以及其他一些东西 - 但我没有得到任何结果。很明显,我没有做到这一点 - 任何人都可以发现我所缺少的东西吗?
答案 0 :(得分:1)
change_form.html
用于创建新对象和更新现有对象,因此您需要确保仅显示现有对象的字段。
更便携的方法是编写一个快速模板标记,然后从模板中传递object_id
变量。
标签可以是:
from django import template
from csv_app.models import csv_profile
register = template.Library()
@register.inclusion_tag('_tag_csv_preview.html')
def csv_preview(pk):
csv = csv_profile.get(pk=pk)
return {'preview': csv.csv_sample()}
_tag_csv_preview.html
模板只包含{{ prevew }}
(或您想要的任何其他样式)。
然后在change_form.html
:
{% load csv_app.tags %}
{% if object_id %}
{% csv_preview object_id %}
{% endif %}
你也可以使用另一种技巧 - 这更简单。 adminform.form.instance
将表示正在为其呈现表单的实例,然后执行此操作:
{% if adminform.form.instance %}
{{ adminform.form.instance.csv_sample }}
{% endif %}