Django:все экземпляры имеют одно и то же поле "многие-ко-многим

У меня есть пользовательская модель пользователя, и у этого пользователя есть поле "многие-ко-многим" под названием classes. Когда пользователь создает новый класс, я добавляю его в поле многие-ко-многим classes. Но проблема в том, что не только этот пользователь указывает на добавленные классы, но и все созданные пользователи указывают на те же классы. Как я могу организовать модели так, чтобы при добавлении class_instance в поле многие-ко-многим классов одного пользователя, только этот пользователь имел эти классы. Вот мой код

models.py

class Class (models.Model):
   key=models.CharField(max_length=256,unique=True);
   name=models.CharField(max_length=256);
   def __str__(self):
       return self.name;

class NewUser(AbstractBaseUser,PermissionsMixin):
       email=models.EmailField(max_length=255,unique=True,default=NULL,)
       name=models.CharField(max_length=255)
       surname=models.CharField(max_length=255)
       is_staff=models.BooleanField(default=False)
       is_active=models.BooleanField(default=True) 
       is_teacher=models.BooleanField(default=False)
       classes=models.ManyToManyField(Class)
       objects=CustomUserManager();
       USERNAME_FIELD='email'
       REQUIRED_FIELDS=['name','surname','is_teacher']

       def __str__(self) :
           return self.name



views.py

@api_view(['POST'])
@permission_classes([permissions.IsAuthenticated])
def create_class(request):
    instance=NewUser.objects.all().filter(id=request.user.id) #getting the user from request(I want only this user to have the added class_instance)
    serializer=ClassSerializer(data=request.data);
    if serializer.is_valid():
     class_instance=serializer.save();
     class_instance.save();
     instance[0].classes.add(class_instance); #adding the  created class to  many-to-many class field
     instance[0].save();
     data={
         'id':instance.id
     }
    return  JsonResponse(data)

Я думаю, что instance объект не нужно создавать. И instance[0].save() также не нужен, потому что функция add фактически сохраняет данные.

from rest_framework.response import Response
from rest_framework import status

@api_view(['POST'])
@permission_classes([permissions.IsAuthenticated])
def create_class(request):
    serializer = ClassSerializer(data=request.data);
    if serializer.is_valid():
        class_instance = serializer.save();
        request.user.classes.add(class_instance)            
        data={
            'id':request.user.id
        }
        return  JsonResponse(data)
    else:
        return Response(status=status.HTTP_400_BAD_REQUEST)

Надеюсь, это может помочь.

Вернуться на верх