1

我正在尝试覆盖 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 以及其他一些东西 - 但我没有得到任何结果。显然我做的不对 - 谁能发现我错过了什么?

4

1 回答 1

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 %}
于 2013-07-28T07:59:03.707 回答