我正在构建一个Django应用程序,它公开了一个restapi,用户可以通过它查询我的应用程序的模型。我按照指示here。在
我的路线在我的应用程序里是这样的网址.py公司名称:
from rest_framework import routers
router = routers.DefaultRouter() router.register(r'myObjects/(?P<id>\d+)/?$', views.MyObjectsViewSet)
url(r'^api/', include(router.urls)),
我的序列化程序如下所示:
^{pr2}$我的视图集如下所示:
class MyObjectsViewSet(viewsets.ModelViewSet):
queryset = MyObjects.objects.get(pk=self.kwargs['id'])
serializer_class = MyObjectSerializer
当我点击/api/myObjects/60/时,从视图集的第一行得到以下错误:
name 'self' is not defined
为什么??如何在视图集中获取60的ID并获取具有该ID的MyObject?在
我会使用ViewSet作为对ModelViewSet的反对。下面的代码应该能满足您的需要,除非有足够的理由使用ModelViewSet。如果转到URL,比如
http://yourdomain/yourmodel/10
,那么pk变量的值将为10。在谢谢-希望有帮助
您的记录器行引用self,但在该上下文中没有self(您处于类级别,而不是方法内部)。尝试移除记录器线路。在
因为您使用的是
viewsets.ModelViewSet
,Django Rest框架为您处理所有特定对象的过滤。将您的queryset
属性更改为MyObjects.objects.all()
。在按照其他人的建议重写
queryset
将破坏/myObjects/
路由,因为id
不存在。在相关问题 更多 >
编程相关推荐