исправил запросы на создание плейлистов

This commit is contained in:
Mike0001-droid 2024-06-20 16:39:44 +05:00
parent a99228f5c6
commit 533128e1f3
3 changed files with 25 additions and 8 deletions

View File

@ -86,8 +86,8 @@ class MyUserViewSet(ViewSet):
if check_password(request.data['password'], password): if check_password(request.data['password'], password):
return Response( return Response(
{'detail': 'Пароли одинаковые', 'error': {'email': 'Пароли одинаковые'}}, {'detail': 'Пароли одинаковые', 'error': {'email': 'Пароли одинаковые'}},
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
if 'email' in request.data: if 'email' in request.data:
del request.data['email'] del request.data['email']
if 'password' in request.data: if 'password' in request.data:

View File

@ -39,7 +39,7 @@ class FavoriteSong(models.Model):
class PlayList(models.Model): class PlayList(models.Model):
name = models.CharField('Название плейлиста', max_length=50) name = models.CharField('Название плейлиста', max_length=50, blank=True, null=True)
song = models.ManyToManyField(Song, blank=True, null=True) song = models.ManyToManyField(Song, blank=True, null=True)
user = models.ForeignKey(MyUser, verbose_name='Пользователь', on_delete=models.CASCADE) user = models.ForeignKey(MyUser, verbose_name='Пользователь', on_delete=models.CASCADE)
art = models.ImageField('Изображение плейлиста', blank=True, null=True, upload_to="playlist_images/") art = models.ImageField('Изображение плейлиста', blank=True, null=True, upload_to="playlist_images/")

View File

@ -34,12 +34,29 @@ class PlayListViewSet(GenericViewSet):
@action(detail=False, methods=['post'], schema=PlayListSchema()) @action(detail=False, methods=['post'], schema=PlayListSchema())
def create_playlist(self, request): def create_playlist(self, request):
data = request.data if request.data['name']:
data.update(user=request.user.pk) try:
serializer = PlayListSerializer(data=request.data) instance = PlayList.objects.get(pk=request.data['playlist_id'], user=request.user.pk)
serializer.is_valid(raise_exception=True) data = request.data
serializer.save() data.update(user=request.user.pk)
return Response(serializer.data) serializer = self.get_serializer(data=request.data, instance=instance)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
except ObjectDoesNotExist:
return Response(
{'detail': 'Объекта не существует', 'error': {'PlayList': 'Объекта не существует'}},
status=status.HTTP_404_NOT_FOUND)
else:
playlist_pk = self.get_queryset().objects.filter(user=request.user.pk)
number_playlist = len(playlist_pk) + 1
name = f"Плейлист № {number_playlist}"
data = request.data
data.update(user=request.user.pk, name=name)
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
@action(detail=False, methods=['post'], schema=PlayListSchema()) @action(detail=False, methods=['post'], schema=PlayListSchema())
def delete_playlist(self, request): def delete_playlist(self, request):