Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
reddit风格的django投票_Django_Reddit_Vote - Fatal编程技术网

reddit风格的django投票

reddit风格的django投票,django,reddit,vote,Django,Reddit,Vote,我需要手工实现一个模型中的投票系统 首先,我得到了迈克·德西莫内的大力帮助,但我需要扩展他的工作 这是我目前的代码 查看 def show_game(request): game = Game.objects.get(pk=1) discussions = game.gamediscussion_set.filter(reply_to=None) d = { 'game':game, 'discussions':discussions

我需要手工实现一个模型中的投票系统

首先,我得到了迈克·德西莫内的大力帮助,但我需要扩展他的工作

这是我目前的代码

查看

def show_game(request):
    game = Game.objects.get(pk=1)
    discussions = game.gamediscussion_set.filter(reply_to=None)
    d = {
        'game':game,
        'discussions':discussions
    }
    return render_to_response('show_game', d)
模板

<ul>
    {% for discussion in discussions %}
    {{ discussion.html }}
    {% endfor %}
</ul>
<li>
    {{ discussion.message }}
    {% if replies %}
        <ul>
            {% for reply in replies %}
                {{ reply }}
            {% endfor %}
        </ul>
    {% endif %}
</li>
讨论模板

<ul>
    {% for discussion in discussions %}
    {{ discussion.html }}
    {% endfor %}
</ul>
<li>
    {{ discussion.message }}
    {% if replies %}
        <ul>
            {% for reply in replies %}
                {{ reply }}
            {% endfor %}
        </ul>
    {% endif %}
</li>
我可以在模板中使用此选项来获得当前投票,但是我不能在我的view.py文件中使用此选项来按此值排序,是否仍要在我的视图中包含此值

编辑(2)

我正在慢慢地到达那里,我需要注释两个字段并对它们进行计算,但是似乎我无法使用注释进行基本的数学计算

有什么想法吗

    discussions = game.gamediscussion_set.filter(reply_to=None).annotate( score= (Count('userUpVotes') - Count('userDownVotes')) ).order_by('-score')

reddit算法基于计算重力的公式。我是从我的房间里找到的

Reddit算法

let t = (t1 – epoch)
(其中t1是发布帖子的时间)

那么

  • 1如果赞成票多于反对票
  • -1如果下降票多于上升票
  • 如果有相同的数字,则为0
现在让我们

z = max({x,1})
我们有

ranking = C log10(z) + yt1

Where C is a constant (C = 45000).

我知道这不是对你问题的直接回答。但是窥探一下可能会很有帮助。当我必须实现一个类似ReDDIT的半智能图像裁剪算法时,它帮助了我。 然后,您所要做的就是重写
save()
,使用
vote\u difference()
方法计算分数


这使得排序更加容易,并且可能会减少您正在进行的数据库调用的数量。

我发布了一个名为qhonuskan votes的投票应用程序,您可以从这里查看它:

Hay,感谢您的回复,肯定为reddits的工作方式添加了一些insite。然而,你似乎没有抓住要点。我的模型有两个字段(UserUpVoces和UserDownVoces),我将计算这些值之间的差异,以确定如何安排我的讨论。userUpVotes可以有8个用户,其中userDownVotes可以有2个。所以最后的投票结果是UserUpVoces-UserDownVoces,在这种情况下可能是+6。现在我需要帮助如何将userDownVotes和userUpVotes字段相加,并将它们相互分离,然后根据这些字段进行排序。很抱歉没有将算法与Django关联,我觉得这些信息会有所帮助,尽管我意识到它没有回答问题。缺点是它使用的是pylons框架,而不是Django框架:(那么,你在这方面取得了多大进展?
z = max({x,1})
ranking = C log10(z) + yt1

Where C is a constant (C = 45000).