Сохранить модель «многие ко многим» в Django / REST?

Я пишу REST API для моего приложения Django и не могу заставить запросы POST работать на одной модели. Вот модель, о которой идет речь:

class ProjectNode(models.Model):
    name = models.CharField(max_length=60)
    place = models.CharField(max_length=150)
    time_spent = models.BigIntegerField()
    parent_project = models.ForeignKey(Project, related_name='tasks')
    workers = models.ManyToManyField(User, related_name='tasks_can_do')

    def __str__(self):
        return self.name

User модель просто держитname поле в данный момент. Вот мой сериализатор дляProjectNode:

class ProjectNodeSerializer(serializers.ModelSerializer):
    class Meta:
        model = ProjectNode
        fields = ('id', 'name', 'place', 'time_spent', 'workers',)

И вот представление API (отviews.py):

class WebProjectNodeListView(generics.ListCreateAPIView):
    queryset = ProjectNode.objects.all()
    serializer_class = ProjectNodeSerializer

    def pre_save(self, obj):
        obj.parent_project = Project.objects.get(pk=self.request.DATA['parent_project'])
        for worker_pk in self.request.DATA['workers']:
            obj.workers.add(User.objects.get(pk=worker_pk))
        obj.final_worker = User.objects.get(pk=self.request.DATA['final_workers'])

Вчера я сначала попробовал более простую версию, которая имела толькоProject ForeignKey отношения, и это, кажется, работает, поэтому я думал, что с помощьюadd будет работать, но я получаю сообщение об ошибке при тестировании API сhttpie (Я уже добавил некоторых пользователей и проекты, и я уверен, что я получаю их идентификаторы правильно). Вот запрос:

http POST :8000/api/tasks/ name="newtask" place="home" time_spent:=50 parent_project:=1 workers:=[1]

И я получаю эту ошибку:

"<ProjectNode: newtask>" needs to have a value for field "projectnode" before this many-to-many relationship can be used.

И трассировка также указывает на эту строку кода:

obj.workers.add(User.objects.get(id=worker_pk))

Теперь я чувствую, что это потому, что я пытаюсь обновить отношения наUser объект передProjectNode объект создан в базе данных, но я не уверен, как решить эту проблему?

Ответы на вопрос(1)

Ваш ответ на вопрос