Я хочу показать в навигационной панели название каждой игры на конкретной платформе.

Я хочу показывать в навигационной панели название каждой игры на определенной платформе, создав GameManager с функцией 'show_pc_game', которая будет показывать только игры, чья платформа PC.

Это мой models.py:

class GameManager(models.Manager):
def show_pc_game(self):
    return self.filter(platform='PC')

class Platform(models.Model):
    PLATFORM_CHOICES = (
        ('PC', 'PC'),
        ('PS', 'playstation'),
        ('XBOX', 'Xbox'),
        ('Nintendo Switch', 'nintendo switch'),
    )
    title = models.CharField(max_length=15, choices=PLATFORM_CHOICES, verbose_name= 
    "platform")
    slug = models.SlugField(max_length=100, unique=True)

    class Meta:
        verbose_name = "platform"
        verbose_name_plural = "platforms"

    def __str__(self):
        return self.title

class Game(models.Model):
    title = models.CharField(max_length=50)
    description = models.TextField()
    slug = models.SlugField(max_length=100, unique=True)
    image = models.ImageField(upload_to="images")
    platform = models.ManyToManyField(Platform)

    class Meta:
        verbose_name = "game"
        verbose_name_plural = "games"

    def __str__(self):
        return self.title

    objects = GameManager()

my views.py:

def home(request):
    return render(request, 'blog/base.html')

class GameList(ListView):
    template_name = "blog/game.html"
    model = Game

class GameDetail(DetailView):
    template_name = "blog/game_detail.html"

class PlatformList(ListView):
    template_name = "blog/platform.html"
    model = Platform

Я использовал 'extends' во вторичных html файлах, поэтому мне нужно внести изменения только в 'base.html'

А это мой context_processors.py для применения контекстов:

from .models import Platform, Game

def add_variable_to_context(request):
    return {
        'platforms': Platform.objects.all(),
        'games': Game.objects.all(),
        'PC_games': Game.objects.show_pc_game(),
    }

И мой файл base.html:

    <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">Platform</a>
        <ul class="dropdown-menu">
            {% for platform in platforms %}
            <li><a class="dropdown-item" href="#"> {{platform.title}} &raquo; </a>
                {% for pcgame in PC_games %}
                <ul class="submenu dropdown-menu">
                    <li><a class="dropdown-item" href="#">{{game.title}}</a></li>
                </ul>
                {% endfor %}
            </li>
            {% endfor %}
        </ul>
    </li>

когда я перезагружаю браузер, я получаю ошибку: объект 'Manager' не имеет атрибута 'show_pc_game'

есть предложения, как это исправить?

Вернуться на верх