Я хочу, чтобы сериализатор возвратил все страны. Он просто запрашивает БД и возвращает его. Но оно всегда возвращает «поле обязательно для заполнения» в поле «страны».
Это мой сериализатор:
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,)