我一直在研究一些“落后”关系的模特。我开始想知道......如果我想过滤一些结果怎么办?
我有两个型号:
Model A:
name
image
date
Model B:
ForeignKey to Model A
name
date
要访问模型A我使用: p = A.objects.all()。order_by(' - date')
我将其传递给模板。
在模板中:
{% for n in model_a.all %}
{% for item in n.modelb_set.all %}
<li>{{item.name}}</li>
{% endfor %}
{% endfor %}
我得到了模型A的所有后向相关对象,那很好。
现在如果我想从该查询中过滤一些结果怎么办?
我在考虑通过以下方式进行迭代:
p = A.objects.all().order_by('-date')
for n in p:
for x in n.modelb_set.filter(date_lte=""):
ls = []
ls.append[x]
如何将其传递给模板并获取我之前获得的内容(未过滤的视图),但现在已经过滤了结果?
答案 0 :(得分:5)
最好的方法是为模型添加方法。用真实世界模型示例来说明会更容易,但要点是:
class ModelA:
...
def filtered_modelb_set(self):
return self.modelb_set.filter(...)
...
然后,在您的模板中,您只需调用该方法:
{% for n in model_a.all %}
{% for item in n.filtered_modelb_set %}
<li>{{item.name}}</li>
{% endfor %}
{% endfor %}