sqlite 用户游戏评分排名

i86rm4rw  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(156)

我在Django中的工具可以添加用户和游戏,然后在表格中看到它们。我想增加排名,但不知道怎么做。

class BeerPongRankingTable(models.Model):
    rank = models.IntegerField(default=0, null=False)
    username = models.CharField(max_length=30, default='', 
    null=False)
    wins = models.IntegerField(default=0, null=False)
    games = models.IntegerField(default=0, null=False)
    created_at = models.DateField(default=date.today)

What my table looks like

lymgl2op

lymgl2op1#

我制作了view Rank,其中的WINS字段以相反的顺序排序。然后从1循环到数据库中的行数。在每次迭代中,i被分配给aaa[i-1].ran.更新的数据被传递到字典,并通过rantempl.html模板显示在页面上。将‘samplesite/ranchtempl.html’行中的‘samplesite’前缀替换为您的应用程序名称。
也就是说,在我的情况下,当我转到地址:http://localhost:8000/samplesite/rank/
进行排序时,更新数据库,然后显示页面。
Urls.py

from django.urls import path
from .views import *

urlpatterns = [
    path("rank/", Rank),
]

Views.py

from .models import BeerPongRankingTable

def Rank(request):
    aaa = BeerPongRankingTable.objects.order_by('-wins')
    for i in range(1, len(aaa) + 1):
        aaa[i - 1].rank = i
        aaa[i - 1].save()
        print('aaa[i].wins', aaa[i-1].wins, type(aaa))
    
    context = {'fff': aaa}

    return render(request, 'samplesite/rank_templ.html', context)

Ranking_templ.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
</head>

<body>
    {% for aa in fff %}
        <p>{{aa.rank}}</p>
        <p>{{aa.username}}</p>
    {% endfor %}
</body>
</html>

相关问题