У меня есть такая модель:
class AttributeType(models.Model):
name = models.CharField(max_length=32)
class Attribute(models.Model): # Server attributes
name = models.ForeignKey(MiscType)
value = models.CharField(max_length=255)
class Server(models.Model):
name = models.CharField(max_length=64)
attributes = models.ManyToManyField(Attribute, blank=True, null=True)
Затем я хочу создать цикл, который должен проходить через все атрибуты, и находить каждый сервер.
которые имеют один или два атрибута, например:
output = []
for attribute in AttributeType.objects.all():
for a in Server.attributes.filter(name__name=attribute.name):
output.append(str(a))
Как я могу сделать это наиболее эффективным? В настоящее время он выполняет один запрос на внутренний цикл.
Вывод, подобный этому, был бы тем, что я хочу:
[{'server1': [{'attribute1': ['val1', 'val2', 'val3'], 'attribute2':
['val1', 'val2']}, 'server2': ....}]