Django сериализатор "поле обязательно для заполнения" - PullRequest
0 голосов
/ 03 апреля 2020

Я хочу, чтобы сериализатор возвратил все страны. Он просто запрашивает БД и возвращает его. Но оно всегда возвращает «поле обязательно для заполнения» в поле «страны».

Это мой сериализатор:

class AdminCountrySiteSerializer(serializers.ModelSerializer):
    countries = serializers.ListField()

    class Meta:
        model = Site
        fields = ["countries"]

    def get_countries(self):
        return list(
            Site.objects.values_list("country", flat=True)
            .order_by("country")
            .distinct()
        )

тестовый класс:

def test_get_all_distinct_countries(self):
    self.client.force_login(self.admin_user)
    url = reverse("admin-site-countries")
    response = self.client.get(url)

    self.assertEqual(response.status_code, status.HTTP_200_OK)
    self.assertEqual(len(response.data["countries"]), 3)

view:

class AdminSiteCountryView(GenericAPIView):
    def get_permissions(self):
        return IsAuthenticated(), IsSoundTalksCS()

    def get_serializer_class(self):
        return AdminCountrySiteSerializer

    @swagger_auto_schema(
        responses={200: openapi.Response(_("Successfully fetched all the countries."),)}
    )
    def get(self, request):
        """
        GET all distinct countries
        """

        serializer_class = self.get_serializer_class()
        # serializer = serializer_class(data=request.data)
        serializer = serializer_class(data={"request": request})
        serializer.is_valid(raise_exception=True)

        return Response(data=serializer.data, status=status.HTTP_200_OK,)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...