gpt4 book ai didi

python - Django:如何按其 child 的 child 的数量订购一套?

转载 作者:行者123 更新时间:2023-11-28 22:46:19 25 4
gpt4 key购买 nike

所以我有两个多对一关系 (Parent -> Child -> SubChild),我想按 Parents 拥有的 subchildren 的数量排序。

我似乎无法弄清楚如何优雅地做到这一点。这是我到目前为止想出的:

parents = Parent.objects.all()

parents_map = {}

for p in parents:
total = 0
children = Child.objects.filter(parent=p)
for c in children:
total += Subchildren.objects.filter(child=c).count()

parents_map[p] = total

# sort the dict into a list of tuples
parents_list = sorted(parents_map.items(), key=operator.itemgetter(1), reverse=True)

parents = []

for p in parents_list:
parents.append(p[0])

return parents

它有效,但我想知道:是否有更好/更快/更优雅的方法来做到这一点?

编辑:出于一般化目的简化了问题,但我实际上需要的是根据子子级子级的数量对父级进行排序,以防这影响您的答案!

最佳答案

这个怎么样?在Parent类中定义一个subchildren_count:

class Parent(models.Model):

@property
def subchildren_count(self):
return Subchildren.objects.filter(child__parent=self).count()

然后按那个属性排序

关于python - Django:如何按其 child 的 child 的数量订购一套?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27629507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com