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
Вернуться на верх