2010-02-03 97 views
3

我是新来的Django和蟒蛇...我可以在django模板中使用别名字段名吗?

我有一个模型,其中包括10个通用字段attrib_00至attrib_09。

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

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

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

我想我需要在渲染前修改上下文,以便通用密钥替换为别名。

我在正确的轨道上吗?

有没有更好的方法?

感谢, 埃德

附:

(添加评论按钮不是为我工作?)

我真的没有任何的代码呢。也许我应该解释我想要达到什么...

我有一个现有的应用程序写在delphi,可以帮助我维护大量的易趣列表,我想模拟这是一个Django的/ python的Web应用程序。

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

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

只是为了信息: - 我想我会做任何循环在视图中多次调用渲染过程之前返回一个响应?

+0

发布一些代码!你怎么弄到琴弦?你如何将它们传递给上下文? – 2010-02-03 12:16:28

回答

5

我会说,在从视图传递到模板之前,在上下文中创建别名。沿线的东西:

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

你可以插入一个新的功能,这样你就不会打破DRY,你很好走。

更新:
只要实际映射此模板内,不是那么多。毕竟,模板只是一个模板。即将接近像你想工作的唯一的事情是{% with %}块:

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

它可能会工作,但我担心它可能得到相当难看。

+0

这正好符合我的想法,只有你解释得比我更好。 ; o) 但是,由于模板与我想知道/希望的类别一对一映射,如果也许他们是一种方法来定义模板中的别名? – FxFocus 2010-02-03 16:04:31

+0

为您添加了一些有关“{%with%}”块的信息。 – 2010-02-03 16:16:58

+0

是的,我可以看到这将是如何混乱。我会坚持你的第一个建议。谢谢你,埃德。 – FxFocus 2010-02-03 16:46:54

0

如何使用翻译?

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

然后根据需要对attrib_00进行不同的翻译。

+0

不知道翻译,谢谢你提到它,现在将会研究它。 – FxFocus 2010-02-03 14:35:14

相关问题