Questo mi ha infastidito da un po 'di tempo.Come mostrare le opzioni dei parametri di query in Django REST Framework - Swagger
Il mio obiettivo finale è mostrare le opzioni dei parametri di query all'interno di SwaggerUI e fornire un input di modulo per ciascun parametro di query. Simile a come viene visualizzato quando si fornisce un serializzatore per POST.
Sto usando un viewset che eredita da GenericViewSet e ho provato quanto segue:
- forniscono
filter_fields
attributo - fornire e impostare l'attributo
filter_backends
-(filters.DjangoFilterBackend,)
- fornire filter_class definito dentro il mio modulo.
- Override
options
metodo per fornire informazioni[actions][GET]
Ecco un piccolo cattura, non sto usando tutti i modelli in modo da non penso DjangoFilterBackend sarà davvero aiutarmi. Sto usando DjangoRESTFramework per parlare con un'API esterna e sto semplicemente recuperando i risultati JSON e passando attraverso il livello frontend.
Ecco un piccolo frammento modificato del mio codice per spiegare meglio il mio problema:
views.py
class SomeViewSet(GenericViewSet):
# Note that I have all of these defined, but I have tried various combinations
filter_fields = ('query_option_1', 'query_option_2',)
filter_backeds = (filters.DjangoFilterBackend,)
filter_class = SomeFilter
query_metadata = some_dict
# This works when request is OPTIONS
def options(self, request, *args, **kwargs):
if self.metadata_class is None:
return self.http_method_not_allowed(request, *args, **kwargs)
data = self.metadata_class().determine_metadata(request, self)
data['actions']['GET'] = self.query_metadata
return Response(data, status=status.HTTP_200_OK)
filters.py
class SomeFilter(FilterSet):
strict = True
query_option_1 = django_filters.NumberFilter(name='query_option_1')
query_option_2 = django_filters.NumberFilter(name='query_option_2')
class Meta:
fields = ['query_option_1', 'query_option_2']
Grazie per lo sguardo, e grazie in anticipo per rispondere.
ho provato la soluzione, ma i parametri di query non appaiono né per la documentazione delle API HTML di default, né per [* rest_framework_swagger *] (https://github.com/marcgibbons/django-rest-swagger/). – JJD
** NOTE ** Funziona per swagger ma non per rest_framework_docs – dnit13
@ dnit13 C'è un supporto per il markdown nei documenti DRF, ma non ancora rilasciato, pepole può ancora usarlo con un template personalizzato templatetag e un override del template. https://github.com/manosim/django-rest-framework-docs/pull/127/files#diff-22988fe5403ab4a34d522ff6fb4bb436 –