करने के लिए अतिरिक्त क्षेत्र जोड़ने मैं धारावाहिक जा करने के लिए एक मॉडल को क्रमानुसार, लेकिन उस मॉडल उदाहरण पर कुछ डेटाबेस लुकअप कर की आवश्यकता है एक अतिरिक्त क्षेत्र को शामिल करना चाहते हैं:Django बाकी फ्रेमवर्क: ModelSerializer
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
क्या है ऐसा करने का सही तरीका? मैं देखता हूं कि you can pass in extra "context" धारावाहिक के लिए, एक संदर्भ शब्दकोश में अतिरिक्त फ़ील्ड में पास करने का सही उत्तर है? उस दृष्टिकोण के साथ, मुझे आवश्यक फ़ील्ड प्राप्त करने का तर्क धारावाहिक परिभाषा के साथ स्वयं निहित नहीं होगा, जो कि आदर्श है क्योंकि हर धारावाहिक उदाहरण को my_field
की आवश्यकता होगी। डीआरएफ धारावाहिक दस्तावेजों में कहीं और says "अतिरिक्त फ़ील्ड किसी भी संपत्ति के अनुरूप हो सकते हैं या मॉडल पर कॉल करने योग्य"। क्या अतिरिक्त फ़ील्ड मैं किस बारे में बात कर रहा हूं? क्या मुझे Foo
की मॉडल परिभाषा में एक फ़ंक्शन परिभाषित करना चाहिए जो my_field
मान देता है, और serializer में मैं my_field को उस कॉल करने योग्य को हुक करता हूं? वह किस तरह का दिखता है?
अग्रिम धन्यवाद, यदि आवश्यक हो तो प्रश्न को स्पष्ट करने में प्रसन्नता हो रही है।
+1 बढ़ाएं, क्या यह कस्टमसेरियलाइज़र के लिए भी काम करेगा? –
क्या ऐसे क्षेत्रों में सत्यापन जोड़ना संभव है? मेरा सवाल है: कस्टम POST मानों को कैसे स्वीकार किया जाए जिन्हें post_save() हैंडलर में मान्य और संसाधित किया जा सकता है? – Alp
ध्यान दें कि SerializerMethodField केवल पढ़ने के लिए है, इसलिए यह आने वाली पोस्ट/पुट/पैच के लिए काम नहीं करेगा। –