django - 如何在 django rest 框架文档中添加参数?
问题描述
我在我的 django 应用程序中安装了 coreapi。我已将 url 通常设置为文档中的默认值:http: //www.django-rest-framework.org/topics/documenting-your-api/
当我打开 url 时,会返回一个带有“list - GET”和“create - POST”参数的页面。但是,在 GET 参数中,我看不到我添加的过滤器。如何在 GET 参数表中显示过滤器?目前只有“page”和“page_size”参数出现,但我还需要显示“matricula”、“ano”、“vinculo”和“mes”。
网址.py
from django.conf.urls import url
from django.urls import path
from rest_framework.documentation import include_docs_urls
from api.views import FuncionarioList
urlpatterns = [
path('api/funcionarios/folha', FuncionarioList.as_view()),
url(r'^api/docs', include_docs_urls(title='Documentação API')),
]
视图.py
from django.db.models import Q
from rest_framework import generics
from rest_framework.pagination import PageNumberPagination
from rest_framework.permissions import IsAuthenticatedOrReadOnly
from api.core.serializer import FuncionarioSerializer
from pessoal.models import Funcionario
class StandardResultsSetPagination(PageNumberPagination):
page_size = 100
page_size_query_param = 'page_size'
max_page_size = 1000
class FuncionarioList(generics.ListCreateAPIView):
"""
get:
List Funcionarios - Folha
"""
serializer_class = FuncionarioSerializer
permission_classes = (IsAuthenticatedOrReadOnly,)
pagination_class = StandardResultsSetPagination
def get_queryset(self):
# Busca Todos
queryset = Funcionario.objects.all()
# Filtros
matricula = self.request.query_params.get('matricula', None)
ano = self.request.query_params.get('ano', None)
mes = self.request.query_params.get('mes', None)
vinculo = self.request.query_params.get('vinculo', None)
# Lista de Filtros
filtro_api = (Q())
# Validadores
if matricula:
filtro_api.add(Q(matricula=matricula), Q.AND)
if ano:
filtro_api.add(Q(ano=ano), Q.AND)
if mes:
filtro_api.add(Q(mes=mes), Q.AND)
if vinculo:
filtro_api.add(Q(vinculo=vinculo), Q.AND)
# Condição para aplicação do filtro
if filtro_api is not None:
queryset = queryset.filter(filtro_api)
# retornar busca
return queryset
序列化程序.py
from rest_framework import serializers
from pessoal.models import Funcionario
class FuncionarioSerializer(serializers.ModelSerializer):
class Meta:
model = Funcionario
fields = ('id', 'matricula', 'nome', 'cargo', 'data_admissao', 'salario_fixo','tota_bruto','total_desconto','liquido','data','vinculo')
解决方案
推荐阅读
- node.js - 如何将主代码与 index.js 电子分开?
- c# - 无法将 ASP.NET Core 2.1 Angular 应用程序部署到 Azure
- ajax - Laravel 动态依赖下拉菜单
- javascript - 更新或将对象推送到找到的文档 mongoose 中的嵌套数组中
- javascript - 检查可变颜色
- python - Pandas 添加索引以对列求和
- github - 将 markdown 表文件嵌入到 github wiki
- google-analytics - 为什么用户快照不能在谷歌分析中显示事件日志?带有 gtm 的网站
- python - matplotlib.image 运行时出现“找不到文件”错误
- python - 当函数只能返回 str 时,mypy 抱怨返回值类型不兼容(得到“可选 [str]”,预期为“str”)