#python #inheritance #marshmallow
#python #наследование #marshmallow
Вопрос:
Вопрос новичка, но у меня простая схема:
class User(Schema):
name = fields.Str(required=True)
email = fields.Str(required=True)
И я хочу расширить его, но в расширенном случае сделать поле необязательным
class UserIHavePhoneNumberFor(User):
phone = fields.Str(required=True)
# Don't Care about Email because I can pester them via phone!
Я проверил документы, но не могу найти способ сделать это.
Любая помощь?
Спасибо!
Ответ №1:
Вероятно, этого нет в документах, потому что это всего лишь базовые правила наследования классов в python.
class UserIHavePhoneNumberFor(User):
phone = fields.Str(required=True)
email = fields.Str(required=False)
Если вам нужны более сложные правила, вы всегда можете просто написать свои собственные правила проверки:
или даже:
https://marshmallow.readthedocs.io/en/stable/extending.html#schema-level-validation
Обычно лучше попробовать и посмотреть, сможете ли вы избежать их использования в первую очередь, проявив разумность в объявлении своих полей, но это есть, когда вам это нужно.
Ответ №2:
Вы ищете частичную загрузку?
Пропуск required=True
проверки
https://marshmallow.readthedocs.io/en/stable/quickstart.html#partial-loading