Как получить доступ к данным модели, используя определенный id в django rest framework
Я хочу получить доступ к данным модели, которая называется IssueReport, используя ее ID в django rest framework, поэтому я использовал метод post для передачи ID вручную, чтобы получить данные IssueReport по этому ID, но он выдает мне ошибку
Method Not Allowed: /app/auth/getissuereport/
[10/Aug/2022 23:26:21] "GET /app/auth/getissuereport/ HTTP/1.1" 405 7036
Internal Server Error: /app/auth/getissuereport/
Traceback (most recent call last):
File "D:\MMRDA\.venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "D:\MMRDA\.venv\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\MMRDA\.venv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "D:\MMRDA\.venv\lib\site-packages\django\views\generic\base.py", line 84, in view
return self.dispatch(request, *args, **kwargs)
File "D:\MMRDA\.venv\lib\site-packages\rest_framework\views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "D:\MMRDA\.venv\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "D:\MMRDA\.venv\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
raise exc
File "D:\MMRDA\.venv\lib\site-packages\rest_framework\views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "D:\MMRDA\mmrda\apis\views.py", line 195, in post
report=IssueReport.objects.get(pk=id)
File "D:\MMRDA\.venv\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "D:\MMRDA\.venv\lib\site-packages\django\db\models\query.py", line 496, in get
raise self.model.DoesNotExist(
DataSet.models.IssueReport.DoesNotExist: IssueReport matching query does not exist.
Вот мой views.py,
class GetIssueReportById(generics.GenericAPIView):
serializer_class=GetIssueReportSerializer
def post(self,request,*args,**kwargs):
serializer=self.get_serializer(data=request.data)
if serializer.is_valid(raise_exception=True):
id=serializer.data.get('id')
report=IssueReport.objects.get(pk=id)
data=IssueReportSerializer(report,context=self.get_serializer_context()).data
return Response({
'message':"Data Fetched successfully",
'status':"success",
'data':data,
},status=status.HTTP_200_OK)
else:
return Response({
'message':"Data not fetched",
'status':status.HTTP_400_BAD_REQUEST
})
это мой serializers.py,
class IssueReportSerializer(serializers.ModelSerializer):
class Meta:
model=IssueReport
fields='__all__'
class GetIssueReportSerializer(serializers.ModelSerializer):
class Meta:
model=IssueReport
fields=('id',)
Так может ли кто-нибудь помочь мне получить доступ к данным, используя только ID или любой другой способ, Заранее спасибо.
Вы, очевидно, послали GET
запрос на свой сервер, но в class GetIssueReportById(generics.GenericAPIView):
вы объявили только post
метод.
Либо определите def get():
метод в class GetIssueReportById
, либо отправьте POST
запрос на сервер (возможно, с помощью какого-то REST клиента из плагина для браузера или плагина VS Code). Если вы получаете id
аргумент с id=serializer.data.get('id')
, id
поле должно быть в POST
body.