(我是 python 和 django 的新手,所以请耐心等待。如果这已在其他地方得到回答但找不到,我深表歉意)
假设我有一个链接模型,并且通过 django-voting 应用程序用户可以对链接实例进行投票。我如何根据它们的分数对这些链接实例进行排序,例如。首先显示得分较高的那些。
我假设我可以使用 django-voting 的 get_top 管理器,但这只会给我得分最高的链接实例,并且不会考虑我想添加的其他参数(例如,属于特定用户的那些链接或分页或其他)。
我的猜测是为我的 Link 模型编写一个自定义管理器,我可以在其中根据每个项目的分数过滤查询集。如果我理解正确,这将需要我遍历每个项目,检查其分数,然后将其放入一个列表(或字典),然后根据每个项目的分数对其进行排序。这不会返回一个查询集,而是一个包含每个项目的字典。
我在这里错过了什么吗?
编辑:
这是 Link 模型的精简版:
class Link(models.Model):
user = models.ForeignKey('auth.User')
category = models.ForeignKey(Category)
date = models.DateTimeField( auto_now_add=True, null=True, blank=True )
is_deleted = models.BooleanField(default=False, blank=True)
links = ValidLinkManager()
objects = models.Manager()
当用户投票时,我认为:
Vote.objects.record_vote(link, user, vote)
其中 link 是 Link 实例,user 是 auth.User 的实例,并且 vote 是 1、0 或 -1。ValidLinkManager 只是过滤掉那些 is_deleted 设置为 True 的链接。