django-model-utils,继承和模板

时间:2012-04-04 06:24:18

标签: python django django-models django-templates

所以django-model-utils很棒 我正在使用django 1.3并尝试使用继承管理器。

我想要完成的是:
- 捕获所有子类的查询集
- 将此查询集传递给模板
- 遍历此查询集,但根据特定的子类

对每个obj进行不同的处理

如果我这样做,请从文档中获取示例:

nearby_places = Place.objects.filter(location='here').select_subclasses()

一旦我在模板中,我有办法知道每个附近的地方是什么,所以我可以做一些不同的事情吗?例如

{% for np in nearby_places %}
{% if np is a restrautant %}
# do this
{% elif np is a bar %}
# do this
{% endif %}
{% endfor %}

我现在唯一能想到的是,如果在每个子类中我都定义了一个像

这样的方法
def is_restaurant()
    return True

def is_bar()
    return True

etc

还有其他更优雅的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以添加模型方法,如:

def classname(self):
    # can't access attributes that start with _  in a template
    return self.__class__.__name__

然后:

{% if np.classname == 'Restaurent' %}
{% endif %}

{% if np.classname == 'Bar' %}
{% endif %}

etc, etc...