Efr*_*rin 0 django filter relationship models
我一直在研究一些"落后"关系的模型.我开始想知道......如果我想过滤一些结果怎么办?
我有两个型号:
Model A:
name
image
date
Model B:
ForeignKey to Model A
name
date
Run Code Online (Sandbox Code Playgroud)
要访问模型AI,请使用: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 %}
Run Code Online (Sandbox Code Playgroud)
我得到了模型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]
Run Code Online (Sandbox Code Playgroud)
我如何将其传递给模板并获得我之前获得的(未过滤的视图)但现在已经过滤了结果?
最好的方法是为模型添加方法.用真实世界模型示例来说明会更容易,但要点是:
class ModelA:
...
def filtered_modelb_set(self):
return self.modelb_set.filter(...)
...
Run Code Online (Sandbox Code Playgroud)
然后,在您的模板中,您只需调用该方法:
{% for n in model_a.all %}
{% for item in n.filtered_modelb_set %}
<li>{{item.name}}</li>
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |