Условный вызов модели FastAPIPython

Программы на Python
Ответить
Anonymous
 Условный вызов модели FastAPI

Сообщение Anonymous »

У меня есть многоязычный FastAPI, подключенный к MongoDB. Мой документ в MongoDB дублируется на двух доступных языках и структурирован следующим образом (упрощенный пример):

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

{
"_id": xxxxxxx,
"en": {
"title": "Drinking Water Composition",
"description": "Drinking water composition expressed in... with pesticides.",
"category": "Water",
"tags": ["water","pesticides"]
},
"fr": {
"title": "Composition de l'eau de boisson",
"description": "Composition de l'eau de boisson exprimée en... présence de pesticides....",
"category": "Eau",
"tags": ["eau","pesticides"]
},
}

Поэтому я реализовал две модели DatasetFR и DatasetEN, каждая из которых создает ссылки на определенные внешние модели () для категории и тегов на каждом языке.

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

class DatasetFR(BaseModel):
title:str
description: str
category: CategoryFR
tags: Optional[List[TagsFR]]

# same for DatasetEN chnaging the lang tag to EN
В определении маршрутов я заставил параметр языка объявить соответствующую модель и получить соответствующую проверку.

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

@router.post("?lang=fr", response_description="Add a dataset")
async def create_dataset(request:Request, dataset: DatasetFR = Body(...), lang:str="fr"):
...
return JSONResponse(status_code=status.HTTP_201_CREATED, content=created_dataset)

@router.post("?lang=en", response_description="Add a dataset")
async def create_dataset(request:Request, dataset: DatasetEN = Body(...), lang:str="en"):
...
return JSONResponse(status_code=status.HTTP_201_CREATED, content=created_dataset)

Но это, похоже, противоречит принципу DRY. Итак, мне интересно, знает ли кто-нибудь элегантное решение: - учитывая параметр lang, динамически вызывать соответствующую модель.
Или, если мы можем создать Набор данных родительской модели, который принимает аргумент lang и извлекает набор данных дочерней модели.

Это невероятно облегчит построение моих маршрутов API, вызов моих моделей и математическое деление. двое пишут...


Подробнее здесь: https://stackoverflow.com/questions/711 ... tapi-model
Ответить

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

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

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

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

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