Добавьте дополнительное поле, кроме модели в Pydantic, которое зависит от значения другого поля.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Добавьте дополнительное поле, кроме модели в Pydantic, которое зависит от значения другого поля.

Сообщение Anonymous »

Я новичок в fastAPI и пытаюсь воспроизвести модели Django.SerializerMethodField() в базовой модели pydantic. Как и в Django, мы можем это сделать

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

class A(serailizer.Serializers):
service = serializer.SerializerMethodField()

def get_service(self, instance):
return "option1" if instance.some_field else "option2"

Итак, я использую pydantic v2 и делаю это следующим образом

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

class ConnectorRead(TimeStampedBaseModel, ConnectorBase):
connector_id: int
service: ConnectorService = None

class Config:
# orm_mode = True  # it has been changed in v2
from_attributes = True

@field_serializer("service")
def get_service(self, value) -> ConnectorService:
return ConnectorService.INTERNAL if self.function_name else ConnectorService.EXTERNAL
Правильен ли этот подход или у нас есть другой способ сделать то же самое? Я поискал, но не смог найти достаточно ресурсов, чтобы понять это.
Код моего маршрутизатора следующий:

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

@router.get("/", response_model=List[ConnectorRead])
def list_connectors(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)):
connectors = db.query(Connector).offset(skip).limit(limit).all()
return connectors
Как видите, я использую response_model напрямую для сериализации объектов моей модели.
Заранее спасибо.

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

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

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

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

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

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

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