0

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

我想要完成的是:
- 一个用于捕获所有子类的查询集
- 将此查询集传递给模板
- 遍历此查询集,但根据特定的子类对每个 obj 进行不同的处理

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

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

一旦我进入模板,有没有办法让我知道每个 near_places 是什么,以便我可以用它做一些不同的事情?例如

{% 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

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

4

1 回答 1

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...
于 2012-04-04T07:04:42.623 回答