Django Rest Framework: использование метода create в ModelViewSet для создания другого экземпляра модели

Я использую Django Rest Framework и drf-nested-routers и у меня есть три модели: Projects, Users и Contributors. Contributor - это способ связать проекты и контрибьюторов и содержит два поля, user_id и project_id.

У меня есть вложенный User ModelViewSet, который возвращает всех пользователей в данном проекте. Для моего задания, используя метод post на projects//users/ нужно создать нового Contributor (не User).

Моя теория заключалась в том, что я хочу получить только id выбранного пользователя в качестве запроса, затем post получит соответствующего пользователя и создаст объект Contributor.

Однако, create() и perform_create() сразу же выдают ошибку, когда я пытаюсь их переопределить: create() падает, потому что получает аргумент project_pk, который я так и не добавил, а perform_create() хочет получить полную форму User для сериализации (и попытки создания).

Я пытался настроить сериализатор так, чтобы запрос 'post' на моем ModelViewSet использовал пользовательский сериализатор FetchUser, но тогда я получаю TypeError: 'NoneType' object is not callable.

Я искал много и мало, но не нашел никого с такой же проблемой. Возможно ли вообще переопределить эти методы таким образом?

Вернуться на верх