डैंजो रीस्ट फ्रेमवर्क में, एक फ्लैट, रीड-राइट सीरियलाइज़र प्रतिनिधित्व बनाने में क्या शामिल है? दस्तावेज़ों में 'फ्लैट प्रतिनिधित्व' (अनुभाग http://django-rest-framework.org/api-guide/serializers.html#dealing-with-nested-objects का अंत) का संदर्भ है, लेकिन RelatedField
सबक्लास का उपयोग करने के लिए सुझावों के अलावा उदाहरण या कुछ भी प्रदान न करें।डीजेगो आरईएसटी फ्रेमवर्क फ्लैट, रीड-राइट सीरियलाइज़र
उदाहरण के लिए, User
और UserProfile
संबंधों का एक फ्लैट प्रतिनिधित्व कैसे प्रदान करें?
# Model
class UserProfile(models.Model):
user = models.OneToOneField(User)
favourite_number = models.IntegerField()
# Serializer
class UserProfileSerializer(serializers.ModelSerializer):
email = serialisers.EmailField(source='user.email')
class Meta:
model = UserProfile
fields = ['id', 'favourite_number', 'email',]
ऊपर UserProfileSerializer
email
क्षेत्र के लिए लिख की अनुमति नहीं है, लेकिन मुझे आशा है कि यह पर्याप्त रूप से अच्छी तरह से इरादा व्यक्त करता है। तो, UserProfileSerializer
पर लिखने योग्य email
विशेषता को अनुमति देने के लिए 'फ्लैट' रीड-राइट सीरियलाइज़र का निर्माण कैसे किया जाना चाहिए? क्या मॉडलसेरियलाइज़र को उप-वर्गीकरण करते समय ऐसा करना संभव है?
धन्यवाद।
पॉल, आपका अनुरोध है। यहां एक एकल JSON नेस्टेड सरणी है, या क्या आपके पास POST अनुरोध में प्रत्येक मॉडल के लिए एक है? (मैं कुछ इसी तरह हासिल करने की कोशिश कर रहा हूं) – jvc26
@ jvc26, ऊपर मेरा उदाहरण 'अनुरोध। डेटा' में एक रूट रूट JSON ऑब्जेक्ट का उपयोग करेगा। 'request.DATA' इस तरह कुछ दिखाई देगा: ' {'id': '1', 'favourite_number': '2', 'ईमेल': '[email protected]'} ' जहां तक ग्राहक है चिंतित है कि JSON ऑब्जेक्ट एक मॉडल उदाहरण का प्रतिनिधित्व करता है, और उसे दो मॉडल ('उपयोगकर्ता' और 'UserProfile') का कोई ज्ञान नहीं होगा, जो वास्तव में सर्वर पर टूट जाता है। 'UserSerializer' और 'UserProfileSerializer' का उपयोग अनुरोध से सामग्री निकालने, सत्यापित करने और सहेजने के लिए किया जाता है। उनके संबंधित मॉडल के लिए डेटा। –