Задать вопрос
ZeroDX
@ZeroDX
Бездельник

[rest_framework] как реализовать обязательные параметры url?

собственно вот
example.com/rest-api/?intarg=1&boolarg=true
from rest_framework import fields, serializers, views

class QueryParamsParser(serializers.Serializer):
    intarg = fields.IntegerField()
    boolarg = fields.BooleanField()

class View(views.APIView):
    def get(request):
        query_params = QueryParamsParser(data=request.query_params)
        ...


Как по-умному замутить так, чтобы intarg и boolarg были обязательными, и без них кидало какую-нибудь ошибку или что-то типа этого
  • Вопрос задан
  • 722 просмотра
Подписаться Средний Комментировать
Решения вопроса 1
ZeroDX
@ZeroDX Автор вопроса
Бездельник
Вылечилось заменой BooleanField на NullBooleanField.
В документации rest framework к BooleanField указано
Note that default BooleanField instances will be generated with a required=False option (since Django models.BooleanField is always blank=True). If you want to change this behaviour explicitly declare the BooleanField on the serializer class.
что имеется ввиду под объявлением поля прямо в классе сериализатора, я так и не вкурил.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
Konstantin18ko
@Konstantin18ko
Стоматолог
class DayPlanViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows groups to be viewed or edited.                     
    """                                                                          
    serializer_class = DayPlanSerializer
    filter_backends = (filters.SearchFilter, DjangoFilterBackend,)
    filter_fields = ('user',)
    def get_queryset(self):
        if self.request.GET.get('start'):
            return DayPlan.objects.filter(start__contains=self.request.GET['start']).order_by('-start')
return 'error: miss parameters'
Ответ написан
@albertalexandrov
required=True
https://www.django-rest-framework.org/api-guide/fi.... Судя по документации, каждое поле по умолчанию обязательное.
Ответ написан
@deliro
if not query_params.is_valid():
    return Response(query_params.errors)
Ответ написан
А проверить данные
query_params.is_valid(raise_exception=True)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы