2015-11-26 7 views
6

मेरे पास followers नामक एक विधि फ़ील्ड है। मैं एक SerializerMethodField में अनुयायियों की सूची प्राप्त:सीरिएलाइज़र विधि फ़ील्ड में नेस्टेड सीरियलाइज़र लौटाएं

followers = serializers.SerializerMethodField() 

मैं एक विशिष्ट serializer BaseUserSmallSerializer कहा जाता है के साथ परिणाम स्वरूपित करना चाहते हैं। इसे प्राप्त करने के लिए विधि get_followers को कैसे कार्यान्वित करना चाहिए?

उत्तर

21

इसे आजमाएं;

followers = BaseUserSmallSerializer(source='get_followers', many=True) 

या

आप methodfield अंदर serializer उपयोग कर सकते हैं;

def get_followers(self, obj): 
    followers_queryset = #get queryset of followers 
    return BaseUserSmallSerializer(followers_queryset, many=True).data 
+0

यह काम नहीं करता है क्योंकि 'अनुयायियों' मेरी कक्षा बेसयूसर की संपत्ति नहीं है। मुझे मिलता है: 'मूल अपवाद टेक्स्ट था:' बेसयूसर 'ऑब्जेक्ट में' get_following 'कोई विशेषता नहीं है। –

+1

ठीक है, या तो आप एक मॉडल विधि लिख सकते हैं या आप serializerMethod फ़ील्ड के अंदर BaseUserSmallSerializer का उपयोग कर सकते हैं। –

+1

ठीक है मुझे मिल गया। त्वरित और पूर्ण उत्तर के लिए धन्यवाद। रिकॉर्ड के लिए, समाधान 2 वह है जिसे मैं ढूंढ रहा था। –

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