[英]Django complex query
我有一个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)
有一个功能可以计算每对用户的权重。 问题是我不知道如何创建查询,否则该查询集将返回所选用户具有最强用户链接权重的用户的查询集,即对于用户“ Paul”而言,其“顶级朋友”的身份Paul和所有其他用户之间的用户链接,按降序排列。
UserLink.objects.filter(from_user=paul).order_by('-weight')
并从查询to_user
获取to_user
属性。 如果要将它减少到许多用户,请使用[:5]
。 如果要将查询限制为权重超过某个值的链接,请使用.filter(from_user=paul, weight__gte=value)
。
我希望这很简单,不需要进一步说明。
如果您具有在数据库级别计算权重的函数,则可以使用extra方法 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.