【发布时间】:2021-12-06 13:19:27
【问题描述】:
我有一个项目模型,我可以通过 POST 方法从中创建实例。我创建了一个名为 UserProject 的新模型,其中包含一个 userID 和一个 projectID。 现在我想在每次使用该 POST 视图创建项目时添加一个 UserProject 对象。
正在创建项目,但 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__'
【问题讨论】: