Неверные данные. Ожидал словарь, а получил str

Ожидаемое поведение

Создать новый объект, используя идентификатор поля ForeignKey.

Актуальное поведение

Он работал нормально, когда класс Serializer выглядел следующим образом :

class RequestSerializer(serializers.ModelSerializer):
    """
    Serializer for Request model
    """
    class Meta:
        """
        Meta class for RequestSerializer
        """
        model = Request
        fields = [
            "id",
            "category",
            "type",
            "finishing_type",
            "finishing_level",
            "need_design",
            "number_of_floors",
            "property_space",
            "no_of_receptions",
            "no_of_rooms",
            "no_of_bathrooms",
            "need_plumbing",
            "need_electricity",
            "need_paving",
            "need_painting",
            "need_carpentry",
            "need_plastering_cementing",
            "need_decorating",
            "include_materials",
            "need_installments",
            "max_installments",
            "min_installments",
            "brief_about_the_request",
            "expires_after_days",
            "location",
        ]

Но затем я добавил вложенный Serializer, чтобы иметь возможность видеть больше деталей, когда я делаю запрос GET, так что теперь это выглядит так :

class RequestSerializer(serializers.ModelSerializer):
    """
    Serializer for Request model
    """
    location = CitySerializer(read_only=False)

    class Meta:
        """
        Meta class for RequestSerializer
        """
        model = Request
...

Эта строка location = CitySerializer(read_only=False) помогла мне увидеть больше деталей в Get запросе, но позволяет опубликовать запрос.

NOTE. Я использовал его как location = CitySerializer(read_only=True), но он также выдал эту ошибку :

NOT NULL constraint failed: requests_request.location_id

UPDATE

Вот данные CitySerializer :

class GovernorateSerializer(serializers.ModelSerializer):
    """
    Governorate Serializer
    """

    class Meta:
        """
        Metaclass for GovernorateSerializer
        """
        model = City
        fields = ('name',)


class CitySerializer(serializers.ModelSerializer):
    """
    Serializer for City model
    """
    governorate = GovernorateSerializer(read_only=True)

    class Meta:
        """
        Metaclass for CitySerializer
        """
        model = City
        fields = ['name', 'governorate']

И ViewSet пользователь для этого процесса:

class RequestViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows requests to be viewed or edited.
    """
    queryset = Request.objects.all()
    permission_classes = (IsAuthenticated,)
    serializer_class = RequestSerializer

    def get_queryset(self):
        """
        Controls what is visible to the user
        """
        return self.queryset.all()

    def perform_create(self, serializer):
        """
        Sets the user to the request
        """
        serializer.save(user=self.request.user)
Вернуться на верх