标签: pydantic

名称为“date”的字段在 pydantic 中不起作用

我正在使用 FastAPI,创建一个 pydantic 模型,其中“日期”作为字段之一的名称。我注意到这会给出错误,生成的架构上显示的类型将为空。我找到了解决此问题的方法,但我想知道为什么我不能首先使用这个“日期”名称。

from datetime import date
from fastapi import FastAPI
from pydantic import BaseModel, Field

class Item(BaseModel):
    # d: date = None # works fine
    # date: date = None # does not work
    d: date = Field(..., alias="date") # the workaround

app = FastAPI()

@app.post("/items/")
async def create_item(item: Item):
    return item
Run Code Online (Sandbox Code Playgroud)

python pydantic fastapi

0
推荐指数
1
解决办法
6962
查看次数

ImportError:无法导入名称“Annotated”和“ValueRange”

你好我正在使用Python 3.8

我正在实现一个带有修复列表的数据类,为了做到这一点,我有以下代码:

from dataclasses import dataclass
from typing import Annotated, List, ValueRange
from pydantic import validate_arguments

@validate_arguments
@dataclass
class WorldArea:
    ...
    data: Annotated[List[float], ValueRange(1, 3)]
    ...
Run Code Online (Sandbox Code Playgroud)

这个想法是数据将是一个包含 1、2 或 3 个元素的列表,正如您所看到的,我正在使用 Annotated 和 ValueRange,但是当我执行时,我收到以下错误:

文件“a.py”,第 2 行,来自键入导入列表,ValueRange ImportError:无法从“打字”导入名称“注释”

文件“a.py”,第 2 行,来自键入导入列表,ValueRange ImportError:无法从“打字”导入名称“ValueRange”

python python-dataclasses python-typing pydantic

0
推荐指数
1
解决办法
9314
查看次数

数据类的 FastAPI 查询不适用于别名

以下 FastAPI 代码对我产生了意想不到的行为:

import uvicorn
from fastapi import FastAPI, Depends, Query
from typing import Optional
from pydantic.dataclasses import dataclass


app = FastAPI()

@dataclass
class Catz:
    qqq: Optional[str] = Query(None, alias="q")

@app.get("/productz/")
def search_products(query: Catz = Depends(Catz)  ):
    products = [{"name": "Computer"}, {"name": "HDD"}]
    if not query.qqq:
        query.qqq = ""
    return {"query": query, "results": [product for product in products if query.qqq in product["name"]]}


@dataclass
class Cats:
    qqq: Optional[str] = Query(None )

@app.get("/products/")
def search_products(query: Cats = Depends(Cats)  ):
    products = [{"name": …
Run Code Online (Sandbox Code Playgroud)

alias python-3.x python-dataclasses pydantic fastapi

0
推荐指数
1
解决办法
1146
查看次数

使用 pydantic (fastapi) 验证 json

所以我有一个看起来像这样的请求

\n
[\n    {\n        "Code": "EVR-T-0dsfdsdf532",\n        "Agent": "pacman",\n        "Kilometrage": "60000",\n        "Operation": "Vidange",\n        "Piece_Consomable": "filtre \xc3\xa0 air",\n        "Quantit\xc3\xa9": 1,\n        "UnitPrice": "200.00",\n        "Montant": 200,\n        "Mainoeuvre": 100\n    },\n    {\n        "Code": "EVR-T-ddsdf53dfds2",\n        "Agent": "pacman",\n        "Kilometrage": "60000",\n        "Operation": "Pneumatique",\n        "Piece_Consomable": "(Autre) Uiop",\n        "Quantit\xc3\xa9": 1,\n        "UnitPrice": "200.00"\n    }\n]\n
Run Code Online (Sandbox Code Playgroud)\n

我的代码看起来像这样

\n
@app.post("/utilities/Entretien/submit", status_code=status.HTTP_200_OK)\nasync def create_item(item: Request, db: Session = Depends(get_db)):\n    operations = await item.json()\n    for i in operations:\n        i : EntretienModel\n        new_operation = TableEntretien(**i)\n        db.add(new_operation)\n        db.commit()\n        db.refresh(new_operation)\n    return {"ping": "pong"}\n
Run Code Online (Sandbox Code Playgroud)\n

我基本上是循环遍历数组,然后将每个对象插入数据库中,\n我正在寻找一种解决方案,可以使用如下所示的 pydantic 模型验证每个对象:

\n
class …
Run Code Online (Sandbox Code Playgroud)

python pydantic fastapi

-1
推荐指数
1
解决办法
2080
查看次数