Сложность частичного обновления в DRF

Я изучаю Django и DRF, у меня проблемы с обновлением поля expire_on. И там же мне нужно поставить логику, чтобы предотвратить установку значения expore_on не более 7 дней от created_on. Мне трудно понять, как обновить то же самое и написать вышеуказанную логику.

Я пробовал:

  1. update function in DRF viewset.Viewset
  2. Django Rest Framework not showing form fields for PATCH/PUT request
  3. Django REST Framework doesn't display value in PUT form
  4. Django form fields not showing up

Модели

class Url_data(models.Model):
    uri_id = models.AutoField(primary_key=True)
    actual_url = models.URLField()
    created_on = models.DateTimeField(
        auto_now_add=True, editable=False, auto_now=False)
    expire_on = models.DateTimeField()
    short_url = models.URLField(max_length=200, editable=False)
    clicks = models.PositiveBigIntegerField(
        default=0, editable=True, blank=True)

Сериализатор

class Url_dataSerializer(serializers.ModelSerializer):
    class Meta:
        model = Url_data
        fields = '__all__'
        read_only_fields = ['short_url', 'created_on', 'clicks']

class ExpireDateUpdateSerializer(serializers.ModelSerializer):
    class Meta:
        model = Url_data
        fields = ('expire_on', )

Вид

class UrlList(generics.ListCreateAPIView):
    queryset = Url_data.objects.all()
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]
    serializer_class = Url_dataSerializer


class UrlDetail(generics.RetrieveDestroyAPIView):
    queryset = Url_data.objects.all()
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]
    serializer_class = Url_dataSerializer


class ExpireDateUpdate(generics.UpdateAPIView):
    queryset = Url_data.objects.all()
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]
    serializer_class = ExpireDateUpdateSerializer

Ошибка

405
Undocumented
Error: Method Not Allowed

**Response body**
{
  "detail": "Method \"PATCH\" not allowed."
}

**Response headers**
 access-control-allow-origin: * 
 allow: GET,DELETE,HEAD,OPTIONS 
 content-length: 42 
 content-type: application/json 
 cross-origin-opener-policy: same-origin 
 date: Fri,07 Jan 2022 22:19:09 GMT 
 referrer-policy: same-origin 
 server: WSGIServer/0.2 CPython/3.8.10 
 vary: Accept,Origin 
 x-content-type-options: nosniff 
 x-frame-options: DENY 

Помогите пожалуйста, заранее спасибо.

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