我有两个模型如下:
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模板中以这种方式使用相关字段名吗?
答案 0 :(得分:5)
请注意,<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
只会为您提供RelatedManager
。这里list.bb
的实例可以与A
的多个实例相关联。
因此,为了得到它们,您需要使用以下语法:
B
提供了更多详情here:
您可以通过在
{% for a_obj in mylist %} {% for b_obj in a_obj.bb.all %} {{ b_obj }} {% endfor %} {% endfor %}
定义中设置FOO_set
参数来覆盖related_name
名称。例如,如果ForeignKey
模型已更改为Entry
,则上面的示例代码如下所示:blog = ForeignKey(Blog, on_delete=models.CASCADE, related_name='entries')