我有这样一个模型:Multideep Django的查询
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))
我该如何做到最高效?目前,它将在每个内部循环中运行一个查询。
像这样的输出会是什么,我想:
[{ '服务器1':[{ 'ATTRIBUTE1': 'VAL1', '值2', 'VAL3'], 'attribute2': ['val1','val2']},'server2':....}]
我得每个属性的基础上,其属性是循环名称(它的一个更大的循环的一部分)。所以我不能使用__in ..我基本上想要一个列表,我每行有一个服务器,每个属性有一列,如果一个服务器有多个具有相同名称的属性,则它是逗号分隔的。 – xeor
但你必须显示每个服务器的所有属性?(作为你的例子),所以你可以从服务器上获取att名称!并迭代然后显示它们! –
是的,我必须显示每个服务器的所有属性。诀窍是可以有多个相同的属性。在这种情况下,我需要创建一个逗号分隔列表。所以我需要在第一个示例中同时提供它们 – xeor