0

Is it possible for the approver_time value to be encoded/ decoded only when the date time value is not set to None?

@dataclass_json(letter_case=LetterCase.CAMEL)
@dataclasses.dataclass
class A:
    approver_time: datetime.datetime = field(default=None,
                                             metadata=config(
                                                 encoder=datetime.date.isoformat,
                                                 decoder=datetime.date.fromisoformat,
                                                 mm_field=fields.DateTime(format='iso')
                                             ))
kev0h1
  • 25
  • 5

1 Answers1

1

Answered it by used of lambdas functions.

@dataclass_json(letter_case=LetterCase.CAMEL)
@dataclass_json
@dataclasses.dataclass
class A(Transfer):
    approver_time: datetime.datetime = field(metadata=config(
                                                 encoder=lambda x: datetime.datetime.isoformat
                                                 if x is not None else None,
                                                 decoder=lambda x: datetime.datetime.fromisoformat
                                                 if x is not None else None,
                                                 mm_field=fields.DateTime(format='iso')
                                             ), default=None)


kev0h1
  • 25
  • 5
  • this seems unnecessarily complicated code. why not mark the field as optional? also what are marshmellow dataclasses, and what benefits does it offer? – rv.kvetch Sep 18 '21 at 23:20