2014-09-02 23 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 एक dict, आप user_who_played['user_id'] लेखन के बजाय डॉट विशेषता वाक्य रचना का उपयोग करके प्रयोक्ता आईडी का उपयोग करना चाहिए, जिसका मतलब है है।

यदि आप डेटाबेस से केवल कुछ फ़ील्ड पुनर्प्राप्त करना चाहते हैं लेकिन फिर भी मॉडल ऑब्जेक्ट्स से निपटना चाहते हैं, तो .values() के बजाय the .only() method का उपयोग करना वैकल्पिक है।

+0

उत्कृष्ट ने कुछ नया सीखा। – Yannick

संबंधित मुद्दे