【问题标题】:Django 'dict' object has no attribute 'user_id'Django 'dict' 对象没有属性 'user_id'
【发布时间】:2014-10-27 05:43:33
【问题描述】:

我收到以下错误 'dict' object has no attribute 'user_id' 但不确定我是否理解错误。因为 user_id 可以从查询集中获得。

错误发生在最后一行代码

users_who_played = UserEvent.objects\
            .values('user_id')\
            .annotate(total_season_points=Sum('points'))\
            .filter(event__season_id=season.id)\
            .order_by('-total_season_points')\

    for i, user_who_played in enumerate(users_who_played):

        try:
            user = UserSeason.objects.
                   get(user=user_who_played.user_id, season=season.id)

【问题讨论】:

    标签: django django-views


    【解决方案1】:

    The .values() method on querysets returns a queryset that returns dictionaries instead of model objects when you iterate over it -- 所以user_who_played是一个字典,这意味着你应该通过写user_who_played['user_id']而不是使用点属性语法来访问用户ID。

    如果您只想从数据库中检索某些字段但仍想处理模型对象,另一种方法是使用the .only() method 而不是.values()

    【讨论】:

      猜你喜欢
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 2016-03-10
      • 2017-03-30
      • 2012-01-12
      • 2021-03-08
      • 2017-05-12
      相关资源
      最近更新 更多