我正在尝试将模型的参数添加到 URL 模式中,如下所示:
http://111.111.11.111:8080/resultados/image.jpg
其中nome_ficheiro = image.jpg(nome_ficheiro 是模型参数,见下文)
但我收到以下错误:
File "/usr/local/lib/python2.7/dist-packages/rest_framework/routers.py", line 139, in get_default_base_name
assert queryset is not None, '`base_name` argument not specified, and could ' \
AssertionError: `base_name` argument not specified, and could not automatically determine the name from the viewset, as it does not have a `.queryset` attribute.
URL 模式:
router = routers.DefaultRouter()
urlpatterns = [url(r'^', include(router.urls))]
router.register(r'resultados/(?P<nome_ficheiro>.+)/$',resultUploadView.as_view({'get': 'get_queryset'}))
View :
class resultUploadView(generics.ListAPIView):
serializer_class = resultSerializer
def get_queryset(self):
nome = self.kwargs['nome_ficheiro']
return labelResult.objects.filter(nome_ficheiro=nome)
型号:
class labelResult(models.Model):
nome_ficheiro = models.CharField(max_length=120)
especie = models.CharField(max_length=120)
zona = models.CharField(max_length=120)
data = models.CharField(max_length=120)
使用:Python 2.7.12 和 DRF 3.6.3
编辑:
url.py:
router.register(r'results/(?P<nome_ficheiro>.+)/$', resultUploadView.as_view({'get': 'get_queryset'}), base_name='img_name')
仍然无法工作,出现同样的错误
最佳答案
您可以在添加路线时为其命名:
router.register(
r'the-url_pattern$',
TheViewSet,
base_name='put-something-here',
)
顺便说一句,同时指定 queryset
类属性和 get_queryset
方法很奇怪,这可能是令 DRF 感到困惑的地方。选择一种方式或另一种方式。
关于python - 断言错误: `base_name` argument not specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49157120/