तो मैं निम्नलिखित संरचना है:Django बाकी फ्रेमवर्क नेस्ट संसाधन कुंजी "आईडी" unaccessible
एक ClientFile एक मालिक के अंतर्गत आता है (वर्ग के नाम = संपर्क)। मैं एपीआई का उपयोग कर क्लाइंटफाइल बनाने की कोशिश कर रहा हूं। अनुरोध में निम्न डेटा शामिल है:
{
name: "Hello!"
owner: {
id: 1,
first_name: "Charlie",
last_name: "Watson"
}
}
मैंने अपनी संरचना के अनुसार धारावाहिक बनाया है। उम्मीद है कि यह एपीआई कॉल "हैलो!" नाम के साथ क्लाइंटफ़ाइल बनायेगा और मालिक के रूप में आईडी 1 से संपर्क करें:
class ContactSerializer(serializers.ModelSerializer):
class Meta:
model = Contact
fields = (
'id',
'first_name',
'last_name',
)
class ClientfileSerializer(serializers.ModelSerializer):
owner = ContactSerializer(read_only=False)
class Meta():
model = Clientfile
fields = (
'id',
'name',
'owner',
)
def create(self, validated_data):
owner = Contact.objects.get(pk=validated_data['owner']['id'])
मैं निर्माण विधि में मिलता हूं। हालांकि, मुझे केवल एक फ़ील्ड (['owner']['id'])
की आवश्यकता नहीं है। अगर मैं print ['owner']['first_name']
करता हूं तो यह 'चार्ली' लौटाता है। लेकिन कुछ कारणों से आईडी सुलभ प्रतीत नहीं होती है ...
ऐसा कोई कारण क्यों हो सकता है? क्या मैं कुछ भूल रहा हूँ? (मैं Django के लिए नया हूँ)
समाधान: बस पता चला कि कारण है कि आईडी पहली जगह में नहीं दिखाया जा सका क्योंकि मैं बहुत जैसे क्षेत्रों में यह घोषणा करने के लिए किया था: आशा है कि इस मदद करता है।
class ContactSerializer(serializers.ModelSerializer):
id = serializers.IntegerField() # ← Here
class Meta:
model = Contact
fields = (
'id',
'first_name',
'last_name',
)
मैंने कोशिश की। यह समस्या को हल करता है लेकिन एक और बनाता है: अब मैं संपर्क नहीं बना सकता। यह एक त्रुटि कहता है कि आईडी फ़ील्ड आवश्यक है ... – MonsieurNinja
क्या आपने क्लाइंटफ़ाइलरिएलाइज़र के लिए आईडी फ़ील्ड को केवल पढ़ने के लिए आवेदन करने का प्रयास किया है? – br3w5
मुझे @MonsieurNinja के समान समस्या है, यह आईडी को मैन्युअल रूप से सेट करने की आवश्यकता है। – Sem