Nic*_*s R 6 django sql-order-by django-voting
(我是python和django的新手,所以请耐心等一下.如果在其他地方已经找到并且找不到,我道歉
假设我有一个Link模型,通过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()
Run Code Online (Sandbox Code Playgroud)
当用户投票时我在我看来有这个:
Vote.objects.record_vote(link, user, vote)
Run Code Online (Sandbox Code Playgroud)
其中link是Link实例,user是auth.User的实例,vote是1,0或-1.ValidLinkManager只过滤掉那些is_deleted设置为True的链接.
VoteManager 中的方法get_top并不复杂。看看它的代码(在managers.py:122中)。您可以轻松创建它的一个版本,该版本接受过滤器作为另一个参数,并在创建后将其应用于“对象”查询集(第 158 行) - 这样您就可以添加其他过滤器,例如您缺少的过滤器。
也许你也可以将其作为补丁提供给乔纳森,他会将其放入 django-voting :)
| 归档时间: |
|
| 查看次数: |
769 次 |
| 最近记录: |