Please could you me why I get this error message while displaying "fav" in my template
QuerySet object has no attribute game_id
I tried to replace game_id
by game
, id_game
but nothing...
view.py
from django.contrib import messages
from django.conf import settings
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render
from start.models import Games, FavoriteGames
import urllib, json
def view_recap(request):
if request.user.is_authenticated():
username = request.user.username
id_user = request.user.id
fav = FavoriteGames.objects.filter(user_id=id_user).game_id
return render(request, 'recap.html', locals())
else:
from start.views import view_logoff
from start.views import view_logon
messages.add_message(request, messages.INFO, 'Vous devez être connecté pour accéder à cette page.')
return redirect(view_logon)
models.py
from django.db import models
from django.conf import settings
# Create your models here.
class Games(models.Model):
guid = models.CharField(max_length=100, unique=True, null=False, verbose_name="GUID")
title = models.CharField(max_length=100, null=False, verbose_name="Titre")
logo = models.CharField(max_length=100, null=True, blank=True, verbose_name="Logo")
date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de création")
update = models.DateTimeField(auto_now=True, verbose_name="Dernière modification")
def __str__(self):
return self.title
class FavoriteGames(models.Model):
game = models.ForeignKey('Games')
user = models.ForeignKey(settings.AUTH_USER_MODEL)
When you loop through the queryset you can access the game_id
for each instance. You can't access it on the queryset.
You can loop through the queryset in the view,
favs = FavoriteGames.objects.filter(user_id=id_user)
for fav in favs:
game_id = game_id
or in the template:
{% for fav in favs %}
{{ fav.game_id }}
{% endfor %}
If you only need the game_ids
from the queryset, you could use values_list
:
game_ids = FavoriteGames.objects.filter(user_id=id_user).values_list('game_id', flat=True)