嗨@estianross。 如果我们能够发表评论,您需要提供更多详细信息。
您确定您的额外操作正在调用filter_queryset()
吗?
他们这样做,但我很确定我没有按照应该使用的方式使用它,如果这是问题所在,我在下面包含了一个简单的示例操作,以展示我在这些操作中所做的基本操作
@action(methods=['GET'], detail=False)
def simplelist(self, request, *args, **kwargs):
serializer = SpecializedModelListSerializer(self.filter_queryset(self.get_queryset()), many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
我建议您创建一个APITestCase并将您期望的 url + 查询参数插入其中。 然后,您将能够根据需要进行断言并插入断点,以查看您的问题所在。
(恐怕如果没有更多细节,根本不可能提供建议。)
我只需按如下方式移动呼叫即可使其正常工作
@action(methods=['GET'], detail=False)
def simplelist(self, request, *args, **kwargs):
qs = self.filter_queryset(self.get_queryset())
serializer = SpecializedModelListSerializer(qs, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
谢谢您的帮助!!!
在我的大多数情况下,这似乎不起作用。
我认为这个问题应该重新打开。 我有同样的问题,建议的解决方案对我有用。
@action(methods=['get'], detail=True, url_path='retrieve_by_card_no/(<int:CardNo>)')
def getByCarNo(self, request, CardNo):
用户 = get_object_or_404(employe_model, EmpCardNo=CardNo)
返回响应(序列化程序。EmployeeInfoSerializer(用户)。数据,状态=状态。HTTP_200_OK)
我想用他的卡号而不是员工ID来搜索员工
任何人都可以帮助我吗?
如果您在 URL 中传递查询参数以及您的操作,我认为过滤器集成可以正常工作。 以下是我采取的行动
@action(methods=['GET'], detail=False)
def export(self, request):
queryset = self.get_queryset()
filtered_queryset = self.filter_queryset(queryset)
尝试从 DRF 可浏览 API 调用导出操作时,发送的请求是
/api/viewname/export/应该像这样调用
/api/viewname/export/?query_param_1=value1&?query_param_2=value2
将查询参数与操作一起传递将调用 filterset 类,因此您将在 filters_queryset 变量中获得一个过滤的查询集
非常感谢我想通了
2021 年 4 月 28 日星期三上午 12:32 Mohammed Sunasra @ 。 * >
写道:
如果您通过查询,我认为过滤器集成可以正常工作
参数以及您在 URL 中的操作。 以下是我采取的行动@action(methods=['GET'], detail=False)
def 导出(自我,请求):
查询集 = self.get_queryset()
filters_queryset = self.filter_queryset(queryset)当尝试从 DRF 可浏览 API 调用导出操作时,请求
被发送的是
/api/viewname/export/应该像这样调用
/api/viewname/export/?query_param_1=value1&?query_param_2=value2将查询参数与操作一起传递将调用过滤器集
类,因此您将在filtered_queryset中获得一个过滤的查询集
多变的—
您收到此消息是因为您发表了评论。
直接回复此邮件,在 GitHub 上查看
https://github.com/carltongibson/django-filter/issues/967#issuecomment-828220562 ,
或退订
https://github.com/notifications/unsubscribe-auth/AMD2QQXC6FGISRWTHRAGUSTTK62Y7ANCNFSM4FP6FMMQ
.
最有用的评论
我只需按如下方式移动呼叫即可使其正常工作
谢谢您的帮助!!!