简体   繁体   中英

REST Django - use objectID right after creation

I have a Project model from wich I can create instances via POST method. I created a new model called UserProject wich contains a userID and a projectID. Now I want to add an UserProject object each time a Project is created with that POST view.

The Project is being created, but the UserProject database keeps being empty, what am I missing?

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__'

It should be:

     ...
        project = serializer.save()
        user = request.user
        n = Userproject.objects.create(user = user, project = project.id)
     ...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM