简体   繁体   English

Django queryset和select_related()

[英]Django queryset and select_related()

I have a small probleme concerning django querysets and select_related. 我有一个关于Django查询集和select_related的小问题。

With this model : 使用此模型:

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)

I'd like to get a list like : 我想要一个像这样的清单:

- group 1
  - device 1
  - device 2
  - device 3
    -sensor 1
- group 2
- group 3
  - device 4
  - device 5
    - sensor 2

I've read the doc about select_related(), but I don't know how to do because I've to start my query bu group cause, it's directly linked to logged user. 我已经阅读了有关select_related()的文档,但是我不知道该怎么做,因为我必须启动查询bu组原因,它直接链接到登录的用户。

If you want to present it this way in a Django template, you probably want to use regroup : https://docs.djangoproject.com/en/dev/ref/templates/builtins/#regroup 如果要以这种方式在Django模板中显示它,则可能要使用regrouphttps : //docs.djangoproject.com/en/dev/ref/templates/builtins/#regroup

The new docs is slightly more obfuscate, I find the old docs version easy to comprehend (this eg from https://docs.djangoproject.com/en/1.3/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>

Where in your case: 在您的情况下:

from view.py 从view.py

group = Group.objects.all()

template.html template.html

{% regroup groups by device as device_list %}

is it possible to optimize or change my model. 有可能优化或更改我的模型。 If i can't query it, it's maybe a model problem and not a queryset problem :) 如果我无法查询,那可能是模型问题,而不是queryset问题:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM