【发布时间】:2017-01-12 08:36:59
【问题描述】:
我收到以下错误即使我的视图覆盖了get_queryset()。
AssertionError: Cannot apply DjangoModelPermissions on a view that does not set `.queryset` or have a `.get_queryset()` method.
这是我的看法:
class PlayerViewSet(viewsets.ModelViewSet):
serializer_class = PlayerSerializer
def get_queryset(self):
try:
quality = self.kwargs['quality'].lower()
print("Getting Player for %s"%quality)
return Player.objects.filter(qualities__contains=quality)
except:
# todo: send out a 404
print("No Players found for this quality :(")
pass
我的设置.py:
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
]
}
编辑 - 附加信息: 这是 urls.py 中的条目:
router = routers.DefaultRouter()
router.register(r'^player-list/(?P<quality>\w+)', players.views.PlayerViewSet, base_name="Player List")
[...]
urlpatterns = [
url(r'^api/', include(router.urls)),
]
我不明白问题是什么。为什么 DRF 看不到我的 get_queryset 方法?
【问题讨论】:
-
这个问题有什么进展或变化吗?代码好像没问题,不知道是什么问题。
-
我打赌这是微不足道的。如果我发现问题会更新。
-
您是否尝试清理 pyc 文件?这有时会有所帮助。
-
刚刚删除了所有
__pycache__文件夹并删除了runserver。没有成功。
标签: python django django-rest-framework