【发布时间】:2011-12-20 01:16:18
【问题描述】:
我们有一个 Django DetailView,我们在其中显示一个对象 (Site),以及它的所有相关对象 (Rooms)。
现在,在模板中,我们可以简单地遍历 RelatedManager 集:
{% for room in site.room_set.all %}
do stuff
{% endfor %}
但是,这样做的问题是,这会将 所有 相关房间拾取到一个站点 - 但是,我们需要通过另一个属性稍微缩小这个范围(我们称之为 year) - 此属性存储在 Django 会话变量中。
目前,我们只是在视图代码中使用Room.objects.filter(site=some_site, year='2009'),这很好。
我的问题更多是出于好奇——有什么方法可以在模板中使用_set,并且仍然过滤或缩小集合?
您能否编写一个自定义模型管理器来执行此操作,以便 _set 将只返回当年的对象?还是有其他方法?
干杯, 维克多
【问题讨论】: