Автоматическое увеличение значения элемента при получении URL-адреса с помощью API
Я новичок в DRF, поэтому прошу прощения, если это банальный вопрос.
Я хочу создать конечную точку API для автоматического увеличения значения столбца в базе данных при каждом обращении к указанному URL-адресу.
Например--> В файле models.py у меня есть:
models.py
class User(models.Model):
name = models.CharField(null=False, blank=False, max_length=250)
error= models.IntegerField(null=False, blank=False)
Как написать функцию представления, чтобы при каждом обращении к связанному URL значение error увеличивалось на 1?
In the URL the ID of the row should also be passed such as: localhost:8000/users/error/2
После перехода по указанному выше URL значение ошибки для пользователя 2 должно увеличиться на единицу.
Спасибо,
Мы можем определить шаблон URL с помощью:
path('/users/error/<int:pk>/', some_view, name='increment-errors'),
Это представление может выглядеть следующим образом:
from django.db.models import F
def my_view(request, pk):
User.objects.filter(pk=pk).update(error=F('error')+1)
# …
где часть …
должна возвращать HttpResponse
.
Обычно GET-запросы не должны изменять сущности, поэтому такие представления обычно должны вызываться POST-запросом. Мы можем ограничить представление POST-запросом с помощью:
from django.views.decorators.http import require_POST
@require_POST
def my_view(request, pk):
User.objects.filter(pk=pk).update(error=F('error')+1)
# …