我有两个模型,如下所示:
class A(models.Model):
a = models.BooleanField(default=False)
q = models.BooleanField(default=False)
class B(models.Model):
c = models.Foreignkey('A', related_name='bb')
d = models.BooleanField(default=False)
e = models.BooleanField(default=False)
这是我的观点:
class Myview(ListView):
model = A
template_name = 'admin/layer.html'
def get_context_data(self, *args, **kwargs):
context = super(ListView, self).get_context_data(*args, **kwargs)
context['mylist'] = A.objects.filter(bb__e=False)
return context
一切工作正常,除了在我的模板“admin/layer.html”中我正在尝试这样做:
{% for list in mylist %}
{{ list.bb.d }}
{% endfor %}
但我没有得到任何价值{{ list.bb.d }}
我可以在 django 模板中以这种方式使用相关字段名称吗?
注意list.bb
只会给你RelatedManager。这里有一个实例A
可以与多个实例相关B
.
因此,要获取它们,您需要使用以下语法:
{% for a_obj in mylist %}
{% for b_obj in a_obj.bb.all %}
{{ b_obj }}
{% endfor %}
{% endfor %}
提供更多详细信息here:
您可以覆盖FOO_set
名称通过设置related_name
中的参数ForeignKey
定义。例如,如果Entry
模型改为blog = ForeignKey(Blog, on_delete=models.CASCADE, related_name='entries')
,上面的示例代码如下所示:
>>> b = Blog.objects.get(id=1)
>>> b.entries.all() # Returns all Entry objects related to Blog.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)