42

में संबंधित मॉडल फ़ील्ड प्राप्त करें मैं 2 लिंक किए गए मॉडल से डेटा सहित Django Rest Framework से HttpResponse वापस करने का प्रयास कर रहा हूं। मॉडल हैं:Django Rest Framework - serializer

class Wine(models.Model): 

    color = models.CharField(max_length=100, blank=True) 
    country = models.CharField(max_length=100, blank=True) 
    region = models.CharField(max_length=100, blank=True) 
    appellation = models.CharField(max_length=100, blank=True) 

class Bottle(models.Model): 

    wine = models.ForeignKey(Wine, null=False) 
    user = models.ForeignKey(User, null=False, related_name='bottles') 

मैं बोतल मॉडल है जो संबंधित शराब से जानकारी शामिल करने के लिए एक serializer करना चाहते हैं।

मैंने कोशिश की:

class BottleSerializer(serializers.HyperlinkedModelSerializer): 
    wine = serializers.RelatedField(source='wine') 

    class Meta: 
     model = Bottle 
     fields = ('url', 'wine.color', 'wine.country', 'user', 'date_rated', 'rating', 'comment', 'get_more') 

जो काम नहीं करता।

कोई विचार मैं इसे कैसे कर सकता हूं?

धन्यवाद :)

+0

इस के लिए धन्यवाद, मैं लगभग वहाँ रहा हूँ। क्या @ टॉम-क्रिस्टी ऑब्जेक्ट को प्राप्त करने के लिए काम करता है लेकिन मैं वाइन ऑब्जेक्ट से सभी फ़ील्ड प्राप्त करने में असमर्थ हूं .. – bpipat

+0

'स्रोत = '*'' 'relatedField' तर्क के रूप में आज़माएं। – mariodev

+0

मुझे अभी भी क्वेरी के परिणामस्वरूप यूनिकोड नाम मिलता है। और खेतों में wine.color कोशिश कर रहा है स्रोत = '*' परिवर्तन क्या करता है? – bpipat

उत्तर

49

कि के रूप में सरल, WineSerializer जोड़ने एक क्षेत्र के रूप में यह हल किया।

class BottleSerializer(serializers.HyperlinkedModelSerializer): 
    wine = WineSerializer(source='wine') 

    class Meta: 
     model = Bottle 
     fields = ('url', 'wine', 'user', 'date_rated', 'rating', 'comment', 'get_more') 

साथ:

class WineSerializer(serializers.HyperlinkedModelSerializer): 

    class Meta: 
     model = Wine 
     fields = ('id', 'url', 'color', 'country', 'region', 'appellation') 

मदद @mariodev के लिए धन्यवाद :)

+0

खुशी है कि आप इसे हल करें। क्या आप यह भी बता सकते हैं कि 'वाइनसेरियलाइज़र' वर्ग किसके लिए खड़ा है, इसलिए हमारे पास एक स्पष्ट उत्तर है .. – mariodev

+0

हो गया, अनुरोध – bpipat

+1

के लिए धन्यवाद, मैंने यह किया है लेकिन मुझे गिरने वाली त्रुटि मिल रही है 'हाइपरलिंक्ड रेलेटेड फ़ील्ड को धारावाहिक में अनुरोध की आवश्यकता है संदर्भ। Serializer को तत्काल चालू करते समय संदर्भ = {'अनुरोध': अनुरोध} जोड़ें। मैं क्या गलत कर रहा हूं? – arturataide