Сложность частичного обновления в DRF
Я изучаю Django и DRF, у меня проблемы с обновлением поля expire_on
. И там же мне нужно поставить логику, чтобы предотвратить установку значения expore_on
не более 7 дней от created_on
. Мне трудно понять, как обновить то же самое и написать вышеуказанную логику.
Я пробовал:
- update function in DRF viewset.Viewset
- Django Rest Framework not showing form fields for PATCH/PUT request
- Django REST Framework doesn't display value in PUT form
- 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
Помогите пожалуйста, заранее спасибо.