Django: Фильтрация элементов в generic.ListView
Я создаю игровой сайт и у меня есть эти модели для игр:
class Game(models.Model):
accountant = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, related_name='games')
title = models.CharField(max_length=50)
bank_money = models.IntegerField()
player_starting_money = models.IntegerField()
golden_card_amount = models.PositiveIntegerField(
validators=[
MinValueValidator(100),
MaxValueValidator(1000)
]
)
теперь я хочу, чтобы каждый пользователь видел свои игры на dashbard:
class DashboardView(mixins.LoginRequiredMixin, generic.ListView):
template_name = 'games/dashboard.html'
model = models.Game
как я могу это сделать (показать каждому пользователю его собственные игры, а не все игры)?
Вы можете переопределить get_queryset
метод для вашего DashboardView
класса, чтобы отфильтровать только игры зарегистрированных пользователей.
class DashboardView(mixins.LoginRequiredMixin, generic.ListView):
template_name = 'games/dashboard.html'
model = models.Game
def get_queryset(self):
queryset = super().get_queryset().filter(accountant=self.request.user)
return queryset