我有这个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,按降序排列。
答案 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。