Я, как новичок в разработке Django, пытаюсь создать RESTful API для мобильного приложения. Я взял на себя существующий проект, и предыдущие разработчики использовали Django REST Framework. Супер классная упаковка, с которой легко работать. За исключением одной вещи ...
Эта проблема возникает, когда я хочу создать новые ресурсы, в которых есть вложенные сериализаторы. Я не очень хорошо объясняю проблемы программного обеспечения со словами, поэтому вот упрощенная версия моего случая:
class UserSerializer(serializers.ModelSerializer):
company = CompanySerializer()
# other props and functions are unrelated
class CompanySerializer(serializers.ModelSerializer):
# props and functions are unrelated
Теперь с этой структурой конечные точки GET /users
и GET /users/{id}
работают отлично, и я получаюрезультаты я ожидаю. Но с POST /users
и PATCH /users/{id}
я получаю ответ, в котором говорится, что мне нужно предоставить объект для company
проп, и он должен напоминать объект Company со всеми необходимыми реквизитами, чтобы он мог создаватькомпания тоже. И я уверен, что он пытается создать новую компанию, потому что я пытался отправить { company: { id: 1 } }
, и он просто игнорирует идентификатор и требует name
для создания новой. Это явно не то, что я хочу, потому что я просто хочу создать пользователя (который может принадлежать или не принадлежать компании), не как пользователя, так и компанию.
Я имеюпопытался переключить это CompanySerializer
на serializers.PrimaryKeyRelatedField
, и похоже, что оно работает на создании конечной точки, но теперь я не получаю объект Company в списке и подробных конечных точках.
Чего мне здесь не хватает? Я на 99% уверен, что они не собирались так работать.