REST Django - использовать идентификатор объекта сразу после создания
У меня есть модель Project, из которой я могу создавать экземпляры через метод POST. Я создал новую модель UserProject, которая содержит идентификатор пользователя и идентификатор проекта. Теперь я хочу добавлять объект UserProject каждый раз, когда проект создается с помощью этого POST представления.
Проект создается, но база данных UserProject остается пустой, что я упускаю?
models.py:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
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, null = True)
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
class Userproject(models.Model):
id = models.AutoField(db_column = 'db_ID', primary_key = True)
user = models.ManyToManyField(User)
project = models.ManyToManyField('Project')
created_at = models.DateTimeField(auto_now_add=True, null=True)
updated_at = models.DateTimeField(auto_now=True, null = True)
class Meta:
db_table = 'UserProjects'
def __str__(self):
return self.id
views.py :
class ProjectView(
APIView,
):
def post(self, request):
serializer = ProjectSerializer(data = request.data)
if serializer.is_valid():
serializer.save()
id = serializer.id
user = request.user
n = Userproject.objects.create(user = user, project = id)
n.save()
return Response({"status": "success", "data": serializer.data}, status = 200)
else:
return Response({"status": "error", "data": serializer.errors}, status = 400)
serializers.py:
GNU nano 4.8 serializers.py from rest_framework import serializers
from .models import Project
class ProjectSerializer(serializers.ModelSerializer):
name = serializers.CharField(max_length = 500, required = True)
descriptor = serializers.CharField(max_length = 1000, default = None)
class Meta:
model = Project
fields = '__all__'
Должно быть:
...
project = serializer.save()
user = request.user
n = Userproject.objects.create(user = user, project = project.id)
...