![](/img/trans.png)
[英]How to list all objects from particular model in django rest framework?
[英]How to access the Data of an model using particular id in django rest framework
我想通过使用它在 django rest 框架中的 ID 来访问被命名为 IssueReport 的 model 的数据,所以我使用了通过 ID 手动传递 ID 的 post 方法来获取错误,但手动报告数据给了我错误
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
方法。
要么在class GetIssueReportById
中定义def get():
方法,要么向服务器发送POST
请求(可能与来自浏览器插件或 VS Code 插件的某些 REST 客户端一起使用)。 如果您使用id=serializer.data.get('id')
获得id
参数,则id
字段必须在POST
正文中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.