2009-11-12 99 views
1

我目前正在使用自定义注释查询集的应用程序。目前我有2个网址设置,但我需要为每个用户想要汇总数据的字段。这可以手动配置,但它会违反干!我基本上会有+8个网址,基本上可以做同样的事情。动态显示Django模板中的字段值(object.x)

因此,这里是我做过什么,

  1. 我有一个创建的自定义模型管理器
  2. 我有一个观点
  3. 我的URL配置

以上所有作品。

因此,基本上URL配置传递给视图的字段名称来注释(由SQL人员分组),视图做了一些额外的处理,并根据传递给它的字段运行自定义模型管理器。

的URL看起来是这样的:

url('^(?P<field>[\w-]+)/(?P<year>\d{4})/(?P<month>\d+)/(?P<day>\d+)/$','by_subtype', name='chart_link'), 

是分贝,列在查询集的实际运行时使用。它从视图传递给我的自定义管理器。下面是从管理器的代码的一个例子:

return self.filter(start_date_time__year=year).filter(start_date_time__month=month).filter(start_date_time__day=day).values(field).annotate(Count(field)) 

此外,我作为上下文变量传递字段的值。这用于动态构建链接。但是,问题实际上是循环查询集并显示数据。

所以,你的典型模板的代码如下所示:

{% for object in object_list %} 
{{ object.sub_type }} : {{ object.sub_type__count|intcomma }} 
{% endfor %} 

基本上你已硬编码领域diplay(即object.x),反正是有动态分配呢?即 如果字段=业务 然后在模板它会自动处理:

{{ object.business }} 

可以这样做?或者我需要创建几个URL?还是有更好的方法来实现相同的结果,一个视图和url动态处理查询。

您可以在github上找到代码,现在模板部分正在使用此代码片段:http://www.djangosnippets.org/snippets/1412/因此,如果您稍后遇到此问题并且想要做类似的事情,请查看github上的代码段。 :http://gist.github.com/233262

回答

1

这听起来像你想做的事的东西线:

# in the views.py: 
field = 'business' 


{# in the template: #} 
{{ object.field }} 

,并有object.business值出现在输出。使用Django模板语言不可能实现这一点。

有定义模板过滤器片段您可以用它来做到这一点,虽然:http://www.djangosnippets.org/snippets/1412/

+0

喜德,是的,这也正是它。我试图创建一个自定义模板标签,但我认为这个问题与模板标签/模板等被解析的方式有关,该代码片段看起来像可以工作。会给它一个镜头。 – ismail 2009-11-12 21:33:23

+0

感谢这工作.... – ismail 2009-11-12 22:52:51