我有以下型号:
class Device(models.Model):
device_name = models.CharField(max_length=50L, blank=True)
hostname = models.CharField(max_length=255L, blank=True)
ip = models.CharField(max_length=255L, blank=True)
vendor = models.CharField(max_length=255L, blank=True)
model = models.CharField(max_length=255L, blank=True)
town = models.CharField(max_length=255L, blank=True)
...
class Group(models.Model):
device = models.ManyToManyField(Device)
group_name = models.CharField(max_length=255L, blank=True, unique=True)
设备表包含超过 30000 条记录,一个组可以容纳 5000、10000 甚至更多的设备。
我需要:
- 将设备添加到组;
- 查看组的内容;
- 编辑整个组(删除设备)。
标准工具(filter_horizontal
、内联、raw_id_fields
)不合适。因为表单编辑Group
工作非常缓慢,因为它检索所有设备记录。要选择所需的设备,需要更多信息(型号、制造商、位置等)。要从组中删除所需的设备,我必须滚动 30000 个设备的列表或滚动组中的 7000 个设备并使用 CTRL 键将其删除。这种方式不适用。
将设备添加到组的问题我通过向设备添加自定义操作来解决(使用list_filter
并且search_fields
我得到正确的结果,然后操作“添加到组”)
剩下的问题我还没有找到。
我想这样解决问题:用户进入组并看到组标题。当他单击组的名称时,他会获得属于该组的设备列表,作为包含所有设备字段的表格。
如何做到这一点?