Пустые поля в командах обновления

При использовании команды обновления нет возможности проверить, когда поле по умолчанию является None или None из-за нового значения.

Заранее спасибо, если сможете помочь :)

# views.py
class UpdateCustomerView(APIErrorsMixin, APIView):
    class InputSerializer(serializers.Serializer):
        name = serializers.CharField(required=False)
        password = serializers.CharField(required=False)
        document = serializers.CharField(required=False)

def put(self, request, id):
        input_serializer = self.InputSerializer(data=request.data)
        input_serializer.is_valid(raise_exception=True)

        cmd = commands.UpdateCustomer(id=id, **input_serializer.validated_data)
        bus = bootstrap.bootstrap()
        bus.handle(cmd)
        return Response(status=status.HTTP_204_NO_CONTENT)

# commands.py
@dataclass
class UpdateCustomer(Command):
    id: UUID
    document: Optional[str] = None
    name: Optional[str] = None

# handlers.py
def update_customer(
    cmd: commands.UpdateCustomer, uow: AbstractCustomerUnitOfWork
) -> None:


    # So here comes the issue cmd.name is None because the view didn't receive it or because the dataclass of the command set its value to default?




Вы можете использовать следующее для запрета None значение для name в InputSerializer

name = serializers.CharField(required=False, allow_null=False)
Вернуться на верх