我对django querysets和select_related有一个小问题。
使用这个模型:
class DeviceGroup(models.Model):
name = models.CharField(max_length=255, unique=True)
owner = models.ForeignKey(User)
class Device(models.Model):
name = models.CharField(max_length=255)
address = models.GenericIPAddressField()
port = models.IntegerField()
group = models.ForeignKey(DeviceGroup)
class Sensor(models.Model):
device = models.ForeignKey(Device)
我希望得到一个列表:
- group 1
- device 1
- device 2
- device 3
-sensor 1
- group 2
- group 3
- device 4
- device 5
- sensor 2
我已经阅读了有关select_related()的文档,但我不知道该怎么办,因为我要启动我的查询群组原因,它直接链接到登录用户。
答案 0 :(得分:1)
如果你想在Django模板中以这种方式呈现它,你可能想要使用regroup
:
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#regroup
新文档略显混淆,我发现旧文档版本易于理解(例如来自https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#regroup):
{% regroup people by gender as gender_list %}
<ul>
{% for gender in gender_list %}
<li>{{ gender.grouper }}
<ul>
{% for item in gender.list %}
<li>{{ item.first_name }} {{ item.last_name }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
在你的情况下:
来自view.py
group = Group.objects.all()
template.html
{% regroup groups by device as device_list %}
答案 1 :(得分:0)
是否可以优化或更改我的模型。 如果我无法查询它,它可能是一个模型问题而不是查询集问题:)