6

का उपयोग कर जेनेरिक रिलेशन का क्रमबद्ध कैसे करें मैं मॉडल पर जेनेरिक रिलेशन का उपयोग कर रहा हूं और Django Rest Framework का उपयोग करके इसे क्रमबद्ध करने की कोशिश कर रहा हूं। हालांकि निम्नलिखित कर मुझे एक विशेषता त्रुटि देता है:Django Rest Framework

'GenericForeignKey' object has no attribute 'field' 

models.py

class AdditionalInfo(): 

    #other fields 

    seal_type = models.ForeignKey(ContentType, 
     related_name='seal' 
    ) 
    seal_id = models.PositiveIntegerField(null=True) 
    seal = generic.GenericForeignKey(
           'seal_type', 
           'seal_id') 

serializers.py

class AdditionalInfoSerializer(): 
    seal = serializers.Field(source='seal') 

क्या मैं गलत कर रहा हूँ? मैं django आराम ढांचे दस्तावेज में इस बारे में ज्यादा नहीं पाया।

उत्तर

6

यदि आप एक सामान्य विदेशी कुंजी को क्रमबद्ध करना चाहते हैं, तो आपको यह निर्धारित करने के लिए एक कस्टम फ़ील्ड को परिभाषित करने की आवश्यकता है कि आप रिश्ते के लक्ष्य को क्रमबद्ध कैसे करना चाहते हैं।

परंतु अपने AdditionalInfo मॉडल मॉडल SealType1 और SealType2 साथ एक सामान्य संबंध नहीं है, आप एक उदाहरण के नीचे देख सकते हैं।

class SealRelatedField(serializers.RelatedField): 

    def to_native(self, value): 
     """ 
     Serialize seal object to whatever you need. 
     """        
     if isinstance(value, SealType1): 
      return ... 
     elif isinstance(value, SealType2): 
      return ... 

     raise Exception('Unexpected type of tagged object') 

आप Django REST ढांचे documentation में अधिक जानकारी प्राप्त कर सकते हैं।