Sto usando Django REST Framework e sto usando i filtri per filtrare il set di query.Come posso interrompere il framework REST di django per mostrare tutti i record se il parametro di query è sbagliato
http://www.django-rest-framework.org/api-guide/filtering/#filtering-against-query-parameters
simili
http://example.com/api/products/4675/?category=clothing&max_price=10.00
ma ho visto che se non v'è errore in filters oi parametri di ricerca non esiste quindi visualizza tutti i risultati che è molto male.
Io invece voglio alcun risultato se non v'è problema con i parametri di query, perché a volte non so se questo funziona o non
EDIT
Questo è il mio codice
class userFilter(django_filters.FilterSet):
strict = True
class Meta:
model = User
fields = ('is_active', 'is_archived', 'age')
REST
class UserListCreateView(generics.ListCreateAPIView):
queryset = User.objects.filter(is_archived=False)
ordering_fields = ('is_active')
filter_class = userFilter
si tratta di impostazioni REST
012.REST_FRAMEWORK = {
'DEFAULT_MODEL_SERIALIZER_CLASS':
'rest_framework.serializers.HyperlinkedModelSerializer',
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
'DEFAULT_FILTER_BACKENDS': (
'rest_framework.filters.DjangoFilterBackend',
'rest_framework.filters.SearchFilter',
'rest_framework.filters.OrderingFilter',
),
# 'PAGINATE_BY': 1,
'PAGINATE_BY_PARAM': 'page_size',
'MAX_PAGINATE_BY': 100,
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}
dovresti pubblicare il tuo codice .. avrà senso dopo averlo guardato .. se stai letteralmente seguendo il link a cui ti riferisci .. risulterà nel dare tutti i risultati in quanto restituisce un set di query che è stato inizializzato su objects.all , piuttosto, controlla per query_params e se non è corretto restituisci Nessuno .. per una risposta migliore sputa il tuo codice! –
@vijayshanker hi vijay, ho aggiunto il codice. si prega di dare un'occhiata – user3214546
override metodo get_queryset .. e cercare QUERY_PARAMS in richiesta per restringere i risultati .. questo dovrebbe fare –