Мне нужно вызвать метод из шаблона. У меня есть следующие коды:
models.py
class Operation(Base):
...
hash_code = models.UUIDField(default=uuid4)
...
def open_operation(self, user):
...
pass
views.py
class OperationOpenView(APIView):
"""
patch:
"""
filter_backends = (filters.DjangoFilterBackend,)
filter_class = OperationOpenFilter
def patch(self, request, id):
user = request.user
operation = Operation.objects.get(pk=id)
serializer = OperationOpenSerializer(operation,
data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
serializer.instance.open_operation(user)
return Response(data={'operation': operation, 'user': user}, status=status.HTTP_200_OK)
else:
return Response(code=400, status=status.HTTP_400_BAD_REQUEST)
serializers.py
class OperationOpenSerializer(serializers.ModelSerializer):
class Meta:
model = Operation
fields = ('id', )
depth = 1
filters.py
class OperationOpenFilter(filters.FilterSet):
id = filters.NumberFilter(
label='id',
required=True,
help_text='ID'
)
class Meta:
model = Operation
fields = ['id',]
urls.py
path(r'operations/open', views.OperationOpenView.as_view()),
tests.py
@pytest.mark.django_db
def test_view(client_api_logged):
response = client_api_logged.patch('/api/operations/open', kwargs=
{'id': '1'})
assert response.status_code == 200
Я не получаю его на работу, получаю ошибку:
"Ошибка типа в / api / operations / open
patch () отсутствует 1 обязательный позиционный аргумент: 'id' "
есть ли свет в конце туннеля?
спасибо всем