Я хочу показать в навигационной панели название каждой игры на конкретной платформе.
Я хочу показывать в навигационной панели название каждой игры на определенной платформе, создав 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}} » </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'
есть предложения, как это исправить?