我正在构建一个Django应用程序,它公开了一个REST API,用户可以通过它查询我的应用程序的模型。我按照说明here。
我的模型看起来像这样:
class MyObject(models.Model):
name = models.TextField()
我的路线在myApp的url.py中显示如下:
from rest_framework import routers
router = routers.DefaultRouter()
router.register(r'myObjects/(?P<id>\d+)/?$', views.MyObjectsViewSet)
url(r'^api/', include(router.urls)),
我的Serializer看起来像这样:
class MyObjectSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = MyObject
fields = ('id', 'name',)
我的视图集如下所示:
class MyObjectsViewSet(viewsets.ViewSet):
def retrieve(self,request,pk=None):
queryset = MyObjects.objects.get(pk=pk).customMyObjectList()
if not queryset:
return Response(status=status.HTTP_400_BAD_REQUEST)
else:
serializer = MyObjectSerializer(queryset)
return Response(serializer.data,status=status.HTTP_200_OK)
当我点击/ api / myObjects / 60 /时出现以下错误:
`base_name` argument not specified, and could not automatically determine the name from the viewset, as it does not have a `.model` or `.queryset` attribute.
This说我的路线上需要一个base_name参数。但是从文档来看,我不清楚base_name参数的值应该是什么。有人可以告诉我使用base_name的路径应该是什么样的吗?
答案 0 :(得分:0)
您的viewset
缺少.queryset
或.model
媒体资源。 DefaultRouter()
内省其中一个属性以确定网址路径。
您可以选择在创建base_name
时定义DefaultRouter()
:
router = routers.DefaultRouter()
router.register('myObjects', views.MyObjectsViewSet, 'base-name-here')