Desidero restituire model_info solo se viene fornito query_params altrimenti dovrebbe fornire un messaggio di errore.Validazione su query_params in Django Rest Framework
Ho provato sotto il codice ma mi sta dando il keyerror quando il nome non viene passato nei parametri della query.
from rest_framework.validators import ValidationError
class ModelSerializer(serializers.ModelSerializer):
class Meta:
model = ModelName
fields = ('name', 'abbreviation')
def validate_name(self, value):
if value:
return value
else:
raise ValidationError('Enter name')
class ModelNameListList(generics.ListCreateAPIView):
renderer_classes = (JSONRenderer,)
serializer_class = ModelSerializer
def get_queryset(self):
queryset = ModelName.objects.all()
name = self.request.query_params['name']
queryset = queryset.filter(Q(name__icontains=name) | Q(abbreviation__icontains=name)).all()
return queryset
non posso usare ottenere metodo, perché Inoltre sto usando l'impaginazione, se userò ottenere metodo che mi restituirà tutti i risultati.
Quando sto usando qui sotto il codice a get_queryset sto diventando oggetto risposta è no Lunghezza
def get_queryset(self):
queryset = ModelName.objects.all()
name = self.request.query_params.get('name', None)
if name:
queryset = queryset.filter(Q(name__icontains=name) | Q(abbreviation__icontains=name)).all()
else:
content = {'errors': 'name is missing'}
return Response(content)
return queryset
Probabilmente dovrebbe essere "exceptions.ValidationError' -' ParseError' è riservato per dati non validi in base a [docs] (http://www.django-rest-framework.org/api-guide/exceptions/#parseerror) mentre 'ValidationError' è per dati ben formati che non soddisfano le linee guida di convalida. – connorbode
@connorbode stavo pensando lo stesso, ma quando provo a sollevare 'ValidationError' da' View' getta l'errore del server 500 dice 'Errore di convalida a ./../' invece di una risposta JSON ben formata. Penso che 'ValidationError' è stick per Serializers. non sono sicuro –