django按照拥有它们的朋友的数量对对象进行排序

时间:2012-10-17 22:23:33

标签: sql django postgresql

我拥有所有权模型,其中FK为User和Item。 用户有自己的朋友,朋友。

class Ownership:
    user = FK(User)
    item = FK(Item)

class User:
    friends = M2M(User)

我想获取用户的所有权对象,按用户拥有相同项目的朋友的数量排序。是否可以在QuerySet中使用,或者我应该使用原始SQL,如果是,那么SQL会是什么样的?

1 个答案:

答案 0 :(得分:1)

你应该能够做到:

(with user u)

users_objects = sorted(Ownership.objects.filter(user=u), key=lambda x:Ownership.objects.filter(item=x.item, user__in=u.friends).count())