所以django-model-utils很棒 我正在使用django 1.3并尝试使用继承管理器。
我想要完成的是:
- 捕获所有子类的查询集
- 将此查询集传递给模板
- 遍历此查询集,但根据特定的子类
如果我这样做,请从文档中获取示例:
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
还有其他更优雅的方法吗?
答案 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...