Django复杂查询

时间:2011-06-26 17:33:34

标签: python django

我有这个UserLink模型,基本上描述了用户之间关系的强度。随着涉及的用户在某些活动中进行交互,UserLink的权重变得更大并且增加。

class UserLink(models.Model):

from_user = models.ForeignKey(User, related_name='following_set')
to_user = models.ForeignKey(User, related_name='follower_set')
date_added = models.DateTimeField(auto_now=True)
weight = models.FloatField(default=1.0, blank=True, null=True)
active = models.BooleanField(default=True)

有一项功能可以计算每对用户的权重。问题是我不知道如何创建一个查询,它将返回查询集与用户具有最强的userlink weigth为所选用户,即对于用户“保罗”得到他的“顶级朋友”基于的权重Paul和所有其他人之间的UserLink,按降序排列。

2 个答案:

答案 0 :(得分:2)

UserLink.objects.filter(from_user=paul).order_by('-weight')

从查询集中获取to_user属性。如果要将其减少为多个用户,请使用[:5]。如果要将查询限制为权重超过特定值的链接,请使用.filter(from_user=paul, weight__gte=value)

我希望这很简单,不需要进一步解释。

答案 1 :(得分:1)

如果您具有在数据库级别计算权重的功能,则可以使用extra method