Я создаю систему списка лидеров для правописного веб-сайта, и мне нужно показать список из 10 лучших пользователей, набирающих очки, а также пользователя, который в настоящее время получает доступ к веб-сайту.Когда я вызываю шаблон context_object_name, отдельные списки работают.Я могу показать топ-10 пользователей, и я могу показать пользователя, который вошел в систему, но когда я пытаюсь показать оба, это не удается.Что мне делать?
views.py - пользователь просто отображается в списке с идентификатором 'id = 10' для устранения неполадок:
from .models import Profile, User
from django.http import HttpResponse,HttpResponseRedirect, Http404
from django.views.generic import ListView, TemplateView
from django.shortcuts import get_object_or_404, render
from django.urls import reverse
class Homepage(ListView):
template_name='homepage.html'
context_object_name = 'profile_list'
def get_queryset(self):
return (Profile.objects.order_by('-score')[:10],
User.objects.get(id=10).profile)
models.py:
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
played = models.BooleanField(default=False)
mistake = models.CharField(max_length=120, default="", blank=True)
score = models.IntegerField(default=0)
outOf = models.IntegerField(default=0)
percentCorrect = models.CharField(max_length=120, default="n/a")
def __str__(self):
return self.user.username;
Соответствующая часть homepage.html:
{% if profile_list %}
<h1 id=ldbtitle>Leaderboard:</h1>
<ul id=ldb>
<li id=ldbfields>
<div id=ldb1>
<p>Username</p>
</div>
<div id=ldb2>
<p>Score</p>
</div>
</li>
{% for Profile in profile_list %}
<li id=ldbitems>
<div id=ldb1>
<p id=1>{{Profile.user.username}}</p>
</div>
<div id=ldb2>
<p>{{ Profile.score}}/{{Profile.outOf}}</p>
</div>
</li>
{% endfor %}
</ul>
{% else %}
<p>No users are available.</p>
{% endif %}