Как добиться поведения, аналогичного методу get_field() DRF, с помощью схемы pydanticPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как добиться поведения, аналогичного методу get_field() DRF, с помощью схемы pydantic

Сообщение Anonymous »

У меня есть три модели — Nomenclature (N), NomenclaureAvailability (NA) и StatusHistory (SH).
Мне нужно довольно часто отслеживать N и записывать, когда он в последний раз ответил. Идея заключалась в том, чтобы сохранить текущий статус и дату последнего_ответа N в соответствующем NA, и во время сериализации я сделал это:

Код: Выделить всё

class NomenclatureSerializer(serializers.ModelSerializer):

status = serializers.SerializerMethodField()
last_answer = serializers.SerializerMethodField()

...

def get_status(self, obj) -> int | None:
try:
return obj.availability.status
except AttributeError:
return None

def get_last_answer(self, obj) -> str:
try:
return f'{obj.availability.last_answer_date:%Y-%m-%d %H:%M:%S}'
except AttributeError:
return 'Was never online'

Цель SH — буквально «регистрировать» каждое изменение статуса NA. Эта система работает достаточно хорошо.
Недавно я начал изучать FastAPI + Pydantic + SQLAclhemy, так как в DRF большая часть кода уже была реализована до меня. Итак, я начал переписывать свой проект на новой платформе и не совсем понимаю, как добиться этой вещи SerializerMethodField() + def get_ в pydantic.

Подробнее здесь: https://stackoverflow.com/questions/793 ... tic-schema
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»