我可以在django模板中使用别名字段名吗?

时间:2010-02-03 11:30:31

标签: django django-templates

我是django和python的新手......

我的模型包含10个通用字段attrib_00到attrib_09。

我将这些字段作为上下文传递给django模板字符串。

我想在模板中使用更有意义的名称。

模板字符串是从另一个模型中获取的,我想到的是添加一个包含逗号分隔的相关别名列表的字段。这个想法是列表中的第一个别名映射到attrib_00,第二个是attrib_01 ......

我认为我需要在渲染之前修改上下文,以便将通用键替换为别名。

我在这里走在正确的轨道上吗?

有更好的方法吗?

谢谢, 编

P.S。

(添加评论按钮对我不起作用?)

我还没有任何代码。也许我应该解释一下我想要实现的目标......

我有一个用delphi编写的现有应用程序,可以帮助我维护大量的ebay列表,我想将其模仿为django / python Web应用程序。

每个产品/列表属于一个类别,每个类别都有一组属性。所以例如裤子可能有颜色,腰围尺寸和腿长。每个类别的属性数量和类型各不相同,但从不超过10个。

我可以看到例如attrib_00如何用于一个类别中的大小并且在另一个类别中说金属但是然后将使用模板中的通用字段名称。

仅供参考: - 我想我会在返回响应之前多次调用渲染过程在视图中进行任何循环?

2 个答案:

答案 0 :(得分:5)

我想说在从视图传递到模板之前在上下文中创建别名。有点像:

c = Context({'foo': attrib_01, 'bar': attrib_02, ...})

你可以将它插入一个新功能,这样你就不会破坏DRY而且你很高兴。

<强>更新
至于在模板中实际映射这个,不是那么多。毕竟,模板只是一个模板。就像你想的那样接近工作的唯一事情是{% with %}块:

{% with attrib_01 as foo %}
   <div class="foo">{{ foo }}</div>
{% endwith %}

它可能会奏效,但我担心它会变得相当难看。

答案 1 :(得分:0)

如何使用翻译?

attrib_00 = models.TextField(_('attrib_00'), blank=True, null=True)

然后根据需要为attrib_00提供不同的翻译。