1

我有一个要学习的小型 Django 项目(它是 RANCID 备份软件的 Web UI),但我遇到了问题。

应用程序的模型定义了设备和设备组。每个设备都是一个组的成员,并有几个状态标志 - 启用、成功 - 以指示它们是否正常运行。这是相关的位。

class DeviceGroup(models.Model):
    group_name = models.CharField(max_length=60,unique=True)

class Device(models.Model):
    hostname = models.CharField(max_length=60,unique=True)
    enabled = models.BooleanField(default=True)
    device_group = models.ForeignKey(DeviceGroup)    
    last_was_success = models.BooleanField(default=False,editable=False)

我在前面的“仪表板”页面上有一个汇总表,它显示了所有组的列表,并且对于每个组,其中有多少设备。我还想显示每组活动设备的数量和失败(即不是 last_was_success)设备的数量。普通设备计数已经可以通过 ForeignKey 字段获得。

这似乎是 annotate 的用途,但不完全是。实际上,我也不确定如何使用原始 SQL 来做到这一点。最有可能作为三个查询和之后的一些查找,或子查询。

那么 - 在 Django 中是否有可能“很好”?或者,您如何在模板或视图中再次加入?传入模板的对象很简单:

device_groups = DeviceGroup.objects.order_by('group_name')

目前,我认为我不能“手动”在查询集结果中添加额外的字段,可以吗?即它不是字典或类似的。

4

1 回答 1

0

我认为你必须使用

device_groups = DeviceGroup.objects.all().order_by('group_name')

或者

device_groups = DeviceGroup.objects.filter(condition).order_by('group_name')
于 2013-06-06T11:12:45.033 回答