2014-09-02 21 views
9

我得到以下錯誤'dict'對象沒有屬性'user_id',但不知道我明白錯誤。由於user_id可從查詢集中獲得。Django'dict'對象沒有屬性'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) 

回答

23

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()

+0

非常好學到了新東西。 – Yannick 2014-09-02 21:08:43