REST Api Django - создание новой модели-объекта и добавление в нее текущего вошедшего пользователя

У меня есть конечная точка, где вошедший в систему пользователь может создать объект под названием 'project'. Я хочу показать пользователю все его собственные проекты, поэтому когда он создает новый, я хочу, чтобы пользователь был автоматически добавлен в поля пользователей проектов. Как мне этого добиться? Оба объекта - пользователь и проект - имеют ID, поэтому я хотел бы иметь собственную модель, которая объединяет эти два объекта.

Моя идея заключалась в создании нового представления, которое принимает идентификатор пользователя и идентификатор проекта и объединяет их в виде отношения ManyToMany. Могу ли я как-то вызвать это представление прямо внутри представления 'create project' без необходимости нового POST? Я хочу иметь возможность использовать представление и в других местах, поэтому я хочу разделить это.

Моя текущая модель выглядит следующим образом

models.py

class Project(models.Model):
    id = models.AutoField(db_column = 'db_ID', primary_key = True)
    name = models.CharField(max_length=500, default = None)
    descriptor = models.CharField(max_length = 1000, default = None)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'Projects'

    def __str__(self):
        return self.name

views.py

class ProjectView(
    APIView,
):
    def post(self, request):
        serializer = ProjectSerializer(data = request.data)
        if serializer.is_valid():
            serializer.save()
            return Response({"status": "success", "data": serializer.data}, status = 200)
        else:
            return Response({"status": "error", "data": serializer.errors}, status = 400)

Добавьте внешний ключ к вашему объекту пользователя из проекта, например

user = models.ForeignKey(User, on_delete=models.CASCADE)

Вы всегда можете установить текущего пользователя, сделав это в вашем сериализаторе

serializer = ProjectSerializer(data = request.data, initial={"user": request.user.id} )
Вернуться на верх