我尝试以这种方式过滤tepmplate中的数据:
{% if devtypes %}
<ul>
{% for devtype in devtypes %}
<li> <h3> {{devtype.name}} </h3> ( {{devtype.desc}} )
<ul>
{% for device in devices %}
{% if device.devtype == devtype %}
<li><h4>{{device}}</h4></li>
{% endif %}
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
{% endif %}
这是我的模特:
class Devtype(models.Model):
pk_devtype=models.AutoField(primary_key=True)
name=models.CharField(max_length=30, blank=True, null=True)
desc=models.CharField(max_length=30, blank=True, null=True)
def __str__(self):
return self.name
class Device(models.Model):
pk_device=models.AutoField(primary_key=True)
devtype=models.ForeignKey('Devtype', on_delete=models.CASCADE)
name=models.CharField(max_length=30, blank=True, null=True)
login=models.CharField(max_length=30, blank=True, null=True)
password=models.CharField(max_length=30, blank=True, null=True)
ip=models.CharField(max_length=20, blank=True, null=True)
desc=models.CharField(max_length=30, blank=True, null=True)
def __str__(self):
return self.name
我认为我的方式是错的,我应该替换这部分
{% if device.devtype == devtype %}
像过滤器一样。请帮忙。
答案 0 :(得分:4)
创建外键时,django会自动创建反向关系;在following relationships backward下的文档中描述。
您需要在模板中使用它,如下所示:
{% if devtypes %}
<ul>
{% for devtype in devtypes %}
<li> <h3> {{devtype.name}} </h3> ( {{devtype.desc}} )
<ul>
{% for device in devtype.device_set.all %}
<li><h4>{{device}}</h4></li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
{% endif %}