我有一个小的Django项目需要学习(它是RANCID备份软件的Web UI),我遇到了一个问题。
该应用程序的模型定义了Devices和DeviceGroups。每个设备都是一个组的成员,并有几个状态标志 - 启用,成功 - 以指示它们是否正常运行。这是相关的部分。
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字段提供。
这似乎是注释的目的,但并不完全。实际上,我不确定我是如何使用原始SQL做的。最有可能是三个查询,一些查询或子查询。
所以 - 在Django中可能'很好'吗?或者,您如何在模板或视图中再次加入?传递给模板的对象只是:
device_groups = DeviceGroup.objects.order_by('group_name')
目前,我认为我不能只是“手动”将额外字段添加到查询集结果中,是吗?即它不是一个字典或类似的。
答案 0 :(得分:0)
我认为你必须使用
device_groups = DeviceGroup.objects.all().order_by('group_name')
或
device_groups = DeviceGroup.objects.filter(condition).order_by('group_name')