在Djang中按变量设置的透视查询

2024-04-23 07:54:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到给定关系中对象的结果集。我想用另一个参数重新组合它们。有没有一个简单的方法可以做到这一点?我活着

结构:

class Domain(models.Model):
    name = models.CharField(max_length=250)

class MetaObject(models.Model):
    name = models.CharField(max_length=250)
    object_type = models.ForeignKey('Type')
    domain = models.ForeignKey('Domain', models.DO_NOTHING, blank=True, null=True)

class Type(models.Model):
    name = models.CharField(max_length=250)

伪代码示例:

^{pr2}$

我想把我的数据转过来,而不是

Domain 1
  object 1, type 1
  object 2, type 1
  object 3, type 2

相反,我想要一个结果集,我可以在一个模板,如下所示

Domain 1
  Type 1
    object 1
    object 2
  Type 2
    object 3

我觉得我需要做的是获取指定域中一组对象的所有不同类型,然后迭代这些类型。我不能从顶部的类型开始,因为我希望它们是每个域的。在


Tags: 对象nametrue类型modelobjectmodelsdomain
1条回答
网友
1楼 · 发布于 2024-04-23 07:54:27

您应该能够通过直接在内部循环中查询类型来实现这一点。使用prefetch_related使其效率更高一些。在

for dom in Domain.objects.all():
    for tp in Type.objects.filter(metaobject__domain=dom).prefetch_related('metaobject'):
       print('Type {}'.format(tp))
       for mo in tp.metaobject_set.all():
           print(mo)

另一种方法可能是获取所有的元对象并在Python中按类型重新组合。在

相关问题 更多 >