मेरे पास एक माता-पिता और एक से एक संबंधित बाल मॉडल है और मैं मूल प्रतिनिधित्व (read only
) में बच्चे के फ्लैट से फ़ील्ड प्रस्तुत करना चाहता हूं। वर्तमान में, मैंने इसे कस्टम to_representation
कार्यान्वयन के साथ हासिल किया है लेकिन यह बहुत शामिल है और मुझे आश्चर्य है कि इसे प्राप्त करने का कोई आसान तरीका नहीं है।Django आराम फ्रेमवर्क flatten नेस्टेड ऑब्जेक्ट का प्रतिनिधित्व
यह इस तथ्य से अधिक जटिल बना दिया गया है कि मेरा संबंधित मॉडल किसी संपत्ति के माध्यम से जुड़ा हुआ है।
तो यहाँठोस उदाहरण है: डिफ़ॉल्ट रूप से एक संबंधित वस्तु की तरह गाया किया जाएगा:
{
parent_name:'Bob',
child:{
name:'Alice'
}
}
यह जो मैं चाहता है और वर्तमान में मेरे to_representation
साथ मिलती है:
{
parent_name:'Bob',
child_name:'Alice'
}
मेरे मॉडल इस तरह दिखें:
class ChildModel(models.Model):
name = models.CharField(max_length=100, null=True)
class ParentModel(models.Model):
name = models.CharField(max_length=100, null=True)
_child = models.ForeignKey('ChildModel', null=True)
@property
def child(self):
return self._most_recent_status
@name.setter
def child(self, value):
self._child = value
यहां मेरे सीरियललाइज़र हैं:
class FlatChildField(serializers.RelatedField):
def to_representation(self, value):
return value.name
class FlatParentSerializer(serializers.ModelSerializer):
parent_name = serializers.CharField(source='name', read_only=True)
child_name = FlatChildField(source='_child', read_only=True)
class Meta:
model = Parent
fields = ('name', 'child_name')
संबंधित मॉडलों का एक फ्लैट प्रतिनिधित्व प्राप्त करने के लिए एक सरल समाधान के लिए मैं आभारी रहूंगा।
पूर्णता के लिए, मुझे यह जानने में दिलचस्पी होगी कि "सामान्य" संबंधित मॉडल (यानी संपत्ति मॉडल फ़ील्ड भी नहीं) के लिए एक आसान समाधान है या नहीं। मैं related_model__field
के django मॉडल क्वेरी सिंटैक्स के समतुल्य की तलाश में था, लेकिन मुझे वह नहीं मिला। क्या यह django आराम ढांचे के लिए मौजूद है?
बहुत धन्यवाद
यह बहुत काम करता है, धन्यवाद। –
यह read_only के बिना भी काम करता है, जो नेस्टेड मॉडल को फ़्लैट करने के लिए बहुत अच्छा है! – alekwisnia