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)
Надеюсь, это может помочь.