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} )