Пустые поля в командах обновления
При использовании команды обновления нет возможности проверить, когда поле по умолчанию является 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)