1

django クエリセットと 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() に関するドキュメントを読みましたが、グループの原因でクエリを開始する必要があるため、その方法がわかりません。ログに記録されたユーザーに直接リンクされています。

4

2 に答える 2

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 %}
于 2012-10-19T12:35:57.810 に答える
0

モデルを最適化または変更することは可能ですか?クエリできない場合は、モデルの問題であり、クエリセットの問題ではない可能性があります:)

于 2012-10-19T13:57:10.710 に答える