Django-REST-Framework का उपयोग करते समय, मैं चयनित फ़ील्ड को नेस्टेड धारावाहिक ऑब्जेक्ट में प्रदर्शित करने में सक्षम नहीं हूं।डीजेगो रेस्ट फ्रेमवर्क - नेस्टेड सीरियलाइजेशन अपेक्षित काम नहीं कर रहा है
मैं सही ढंग से Address
मॉडल की सम्पूर्णता को क्रमानुसार करने में सक्षम हूँ, लेकिन मैं Address
से केवल कुछ ही क्षेत्रों, मेरे धारावाहिक Outlet
में नेस्ट चाहते हैं। जब serializer OutletSerializer
पर क्षेत्र outlet_address
के लिए एक मूल्य प्राप्त करने का प्रयास एक
गॉट AttributeError नहीं है। धारावाहिक फ़ील्ड को गलत तरीके से नामित किया जा सकता है और
Outlet
उदाहरण पर किसी भी विशेषता या कुंजी से मेल नहीं खाता है। मूल अपवाद टेक्स्ट था: 'आउटलेट' ऑब्जेक्ट में 'आउटलेट_ड्रेस' कोई विशेषता नहीं है।
api_v1/models.py
class Address(models.Model):
building = models.CharField(_("shop number, floor & building"), max_length=128)
street = models.CharField(_("street"), max_length=128, blank=True)
area = models.ManyToManyField(Area, related_name='address')
city = models.ForeignKey(City, related_name='address')
pin_code = models.CharField(_("PIN code"), max_length=6, default="")
def __unicode__(self):
return self.building + " " + self.street + " ..."
class Outlet(models.Model):
name = models.CharField(max_length=100, blank=True)
chain = models.ForeignKey(Chain, related_name='outlet', blank=True, null=True)
organization = models.ForeignKey(Organization, blank=True, null=True)
address = models.OneToOneField(Address, related_name='outlet_address')
thumbnail = AjaxImageField(upload_to='thumbnails',
max_height=200, #optional
max_width=200, # optional
crop=True) # optional
date_created = models.DateTimeField(_('date created'), default=timezone.now)
def __unicode__(self):
return self.name
api_v1/serializers.py
from rest_framework import serializers
from api_v1.models import Outlet, Address
class AddressSerializer(serializers.ModelSerializer):
#address_area = AreaSerializer(many=False)
class Meta:
model = Address
fields = ('building', 'street',)
depth = 3
class OutletSerializer(serializers.ModelSerializer):
outlet_address = AddressSerializer(many=False)
#area = serializers.CharField(source='address.area') #multiple levels of nesting?
class Meta:
model = Outlet
fields = ('id', 'name', 'thumbnail', 'outlet_address')
# fields = ('id', 'name', 'thumbnail', 'address') # this works
depth = 3
इस बिंदु पर, यह आउटलेट मॉडल में outlet_address विशेषता खोजने में असमर्थ है जबकि मुझे उम्मीद है कि यह धारावाहिक में सक्षम होना चाहिए।
गॉट AttributeError जब serializer
OutletSerializer
पर क्षेत्रoutlet_address
के लिए एक मूल्य प्राप्त करने का प्रयास। Serializer फ़ील्ड को गलत तरीके से नामित किया जा सकता है औरOutlet
उदाहरण पर किसी भी विशेषता या कुंजी से मेल नहीं खाता है। मूल अपवाद टेक्स्ट था: 'आउटलेट' ऑब्जेक्ट में कोई आउटलेट 'आउटलेट_ड्रेस' नहीं है।
अन्य उत्तर पर बताया गया है, मैं कोशिश की है:
- सभी मॉडल
मैंने किया था जुड़ा हुआ लेख पहले देखते हैं, लेकिन यह पिछड़े संबंधों के लिए किया गया था। आपका जवाब काम करता है पूरी तरह से और अब भी मैं डीआरएफ जादू को थोड़ा बेहतर समझता हूं। धन्यवाद! – Pranab