【发布时间】:2019-07-03 00:11:41
【问题描述】:
您好,我正在创建一个视图集。我想超越 get 函数并获取所有具有过滤参数的记录,这些参数被传递到 get 视图中。我还希望能够完成其余的 crud 功能 - GET POST PUT DELETE - 并使用通过 url 传递的参数作为 POST 和 UPDATE 的参数。
现在,当我传入参数时,而不是过滤返回的数据,它没有给我任何细节,这不是我想要的。我希望它用作我从数据库返回的所有记录的辅助过滤器。
代码如下:
视图集
class PreferenceUserViewSet(viewsets.ModelViewSet):
queryset = Preference.objects.all().filter(user_id=1)
serializer_class = PreferenceSerializer
class PreferenceNamespaceViewSet(viewsets.ModelViewSet):
queryset = Preference.objects.all().filter(user_id=1)
serializer_class = PreferenceSerializer
def get_permissions(self):
if self.action == 'create' or self.action == 'destroy':
permission_classes = [IsAuthenticated]
else:
permission_classes = [IsAdminUser]
return [permission() for permission in permission_classes]
@permission_classes((IsAuthenticated))
def list(self, request, namespace=None):
# switch user_id value with logged in users id
queryset = Preference.objects.all().filter(user_id=1, namespace=namespace)
serializer = PreferenceSerializer(queryset, many=True)
return Response(serializer.data)
网址:
path('preferences/<str:namespace>/', PreferenceNamespaceViewSet.as_view({
'get':'list'
})),
path('users/<int:pk>/stacks/', person_stack, name='user-stacks'),
我想使用namepsace 作为 GET 中返回的所有数据的辅助过滤器。我还想将它用作创建新首选项时可以输入的数据。
** 我也想用第三个潜在参数做同样的事情...... **
潜在的第三个参数:
urlpatterns = [
path('preferences/<str:namespace>/<str:path>', PreferencePathViewSet.as_view({
'get':'list'
})),
path('preferences/<str:namespace>/', PreferenceNamespaceViewSet.as_view({
'get':'list'
})),
path('users/<int:pk>/stacks/', person_stack, name='user-stacks'),
]
【问题讨论】:
标签: python django django-rest-framework