从temp调用模型函数

2024-04-25 13:18:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我在试着改变_表单.html管理模板。当我在管理区输入数据时,它会帮助我看到CSV文件中的几行我正在输入的数据。你知道吗

所以,在我的零钱副本中_表单.html,我放置了:

<!-- First three lines of the csv we're parsing. -->
foo: {{ csv_app.csv_sample }}
<!-- end -->

在我的模型中(“csv\u profile”):

def csv_sample(self):
    return "foo"

我试过改变csv_app.csv\u示例解析_csv.csv\u应用程序.csv\u示例以及其他一些东西-但我没有得到任何结果。显然我做得不对-有人能发现我遗漏了什么吗?你知道吗


Tags: 文件csv数据sample模板app表单示例
1条回答
网友
1楼 · 发布于 2024-04-25 13:18:32

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 %}

相关问题 更多 >