首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“QuerySet”对象没有属性

问“QuerySet”对象没有属性
EN

Stack Overflow用户
提问于 2017-05-31 20:29:04
回答 2查看 18.4K关注 0票数 4

您能告诉我为什么在我的模板中显示"fav“时出现这个错误信息吗?

代码语言:javascript
复制
QuerySet object has no attribute game_id

我试着用game,id_game来代替game_id,但是什么都没有...

view.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-31 20:36:49

当您遍历查询集时,您可以访问每个实例的game_id。您不能在查询集上访问它。

您可以遍历视图中的查询集,

代码语言:javascript
复制
favs = FavoriteGames.objects.filter(user_id=id_user)

for fav in favs:
    game_id = game_id

或在模板中:

代码语言:javascript
复制
{% for fav in favs %}
  {{ fav.game_id }}
{% endfor %}

如果您只需要查询集中的game_ids,则可以使用values_list

代码语言:javascript
复制
game_ids = FavoriteGames.objects.filter(user_id=id_user).values_list('game_id', flat=True)
票数 4
EN

Stack Overflow用户

发布于 2017-05-31 20:33:25

filter将返回Queryset.So,使用get而不是filter。如果有多个对象,则使用filter,但需要遍历查询集以获取每个对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44284850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档