2017-05-31 81 views
1

請替我我爲什麼而在我的模板顯示「最愛」「查詢集」對象沒有屬性

QuerySet object has no attribute game_id 

我試圖gameid_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) 

回答

1

當您遍歷查詢集時,您可以訪問每個實例的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) 
+0

謝謝@Alasdair – GrandGTO

1

filter將返回Queryset.So使用get而不是filter。如果有多個對象使用filter,但您需要遍歷該查詢集以獲取每個對象。

+1

過濾器返回幾個結果。所以我想我需要它。只返回1個結果,所以我有一個錯誤,告訴結果太多。 – GrandGTO

+0

這是get的錯誤消息:get()返回多個FavoriteGames - 它返回2! – GrandGTO

+0

因此,多個'game_id'將存在。所以'FavoriteGames.objects.filter(user_id = id_user).values_list(game_id,flat = True)'將獲得所有game_id – itzMEonTV

相關問題