Как создать и, если пользователь вышел, просто обновить другие данные в django rest framework

Я хочу создать API в Django rest framework. Задача Highlight будет создавать и когда у одного и того же пользователя будет такой же id книги, то он будет обновлять. Я добавил код ниже. но я не нахожу никакого способа обновить значения без создания новых данных.

models.py


class HighLight(models.Model):
    id = models.AutoField(primary_key=True)
    book = models.ForeignKey(
        BookDetails,
        on_delete=models.CASCADE,
        related_name='book_highlight'
    )
    customer = models.ForeignKey('user_profile.CustomerProfile', on_delete=models.CASCADE,null=True,blank=True)
    
    start = models.IntegerField(blank=True, null=True)
    end = models.IntegerField(blank=True, null=True)

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

Serializer.py

class HighLightSerializer(serializers.Serializer):

    class Meta:
        model = HighLight
        fields = ('id','book','customer','start','end',)

   

Views.py



class HighLightedBooks(generics.ListCreateAPIView):

    permission_classes = (IsAuthenticated,)
    serializer_class = HighLightSerializer
    authentication_classes = (TokenAuthentication,)
    
    
    
    
    def perform_create(self, serializer):
        book_id = self.request.data.get('book', False)
        try:
            customer = CustomerProfile.objects.get(user=self.request.user)
        except Exception as e:
            raise ValidationError('You must have to update your profile before submitting a review')
        
        serializer.save(customer_id=customer.id, book_id=book_id)

ListCreateAPIView общее представление настраивает сериализатор на создание новой записи на save.

Для обновления HighLight с помощью дженериков необходимо создать новое представление с UpdateAPIView и новым URL (например, /path/<int:pk>).

Вы можете подключиться к perform_update так, как вы это делаете для perform_create.

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