'QuerySet' 对象没有属性
'QuerySet' object has no attribute
请问为什么我在模板中显示 "fav" 时收到此错误消息
QuerySet object has no attribute game_id
我尝试用 game
、id_game
替换 game_id
,但什么都没有...
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)
filter
将 return Queryset
。因此请使用 get
而不是 filter
。如果存在多个对象,请使用 filter
,但您需要遍历该查询集以获取每个对象。
当您遍历查询集时,您可以访问每个实例的 game_id
。您无法在查询集上访问它。
您可以在视图中循环遍历查询集,
favs = FavoriteGames.objects.filter(user_id=id_user)
for fav in favs:
game_id = game_id
或在模板中:
{% for fav in favs %}
{{ fav.game_id }}
{% endfor %}
如果您只需要查询集中的 game_ids
,您可以使用 values_list
:
game_ids = FavoriteGames.objects.filter(user_id=id_user).values_list('game_id', flat=True)
请问为什么我在模板中显示 "fav" 时收到此错误消息
QuerySet object has no attribute game_id
我尝试用 game
、id_game
替换 game_id
,但什么都没有...
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)
filter
将 return Queryset
。因此请使用 get
而不是 filter
。如果存在多个对象,请使用 filter
,但您需要遍历该查询集以获取每个对象。
当您遍历查询集时,您可以访问每个实例的 game_id
。您无法在查询集上访问它。
您可以在视图中循环遍历查询集,
favs = FavoriteGames.objects.filter(user_id=id_user)
for fav in favs:
game_id = game_id
或在模板中:
{% for fav in favs %}
{{ fav.game_id }}
{% endfor %}
如果您只需要查询集中的 game_ids
,您可以使用 values_list
:
game_ids = FavoriteGames.objects.filter(user_id=id_user).values_list('game_id', flat=True)