Как вернуть единый список отдельных моделей из Django View - PullRequest
0 голосов
/ 17 апреля 2019

Я создаю систему списка лидеров для правописного веб-сайта, и мне нужно показать список из 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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...