Поэтому у меня есть следующая структура:
Клиентский файл принадлежит владельцу (имя класса = Контакт). Я пытаюсь создать клиентский файл с помощью API. Запрос содержит следующие данные:
{
name: "Hello!"
owner: {
id: 1,
first_name: "Charlie",
last_name: "Watson"
}
}
Я создал сериализатор в соответствии с моей структурой. Надеясь, что этот вызов API создаст клиентский файл с именем "Hello!" и контакт id 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'])
Я вхожу в метод create. Однако единственное поле, которое мне нужно (['owner']['id'])
недоступно. Если я print ['owner']['first_name']
он вернет "Charlie". Но идентификатор по некоторым причинам не кажется доступным...
Любые причины, по которым это может произойти? Я что-то упускаю? (Я новичок в Django)
РЕШЕНИЕ: Просто выяснилось, что причина, по которой идентификатор не показывалась в первую очередь, заключалась в том, что я должен был объявить ее в полях следующим образом: Надеюсь, это поможет.
class ContactSerializer(serializers.ModelSerializer):
id = serializers.IntegerField() # ← Here
class Meta:
model = Contact
fields = (
'id',
'first_name',
'last_name',
)