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

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):
return Response(
{'detail': 'Пароли одинаковые', 'error': {'email': 'Пароли одинаковые'}},
status=status.HTTP_400_BAD_REQUEST)
if 'email' in request.data:
del request.data['email']
if 'password' in request.data:

View File

@ -39,7 +39,7 @@ class FavoriteSong(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)
user = models.ForeignKey(MyUser, verbose_name='Пользователь', on_delete=models.CASCADE)
art = models.ImageField('Изображение плейлиста', blank=True, null=True, upload_to="playlist_images/")

View File

@ -34,9 +34,26 @@ class PlayListViewSet(GenericViewSet):
@action(detail=False, methods=['post'], schema=PlayListSchema())
def create_playlist(self, request):
if request.data['name']:
try:
instance = PlayList.objects.get(pk=request.data['playlist_id'], user=request.user.pk)
data = request.data
data.update(user=request.user.pk)
serializer = PlayListSerializer(data=request.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)