【发布时间】:2021-02-10 13:35:12
【问题描述】:
我正在使用 Pydantic root_validator 在我的模型中执行一些计算:
class ProductLne(BaseModel):
qtt_line: float = 0.00
prix_unite: float = 0.00
so_total_ht: float = 0.00
class Config:
validate_assignment = True
@root_validator()
def calculat_so_totals(cls, values):
values["so_total_ht"] = values.get("qtt_line")*values.get("prix_unite")
return values
class Bon(BaseModel):
articles: List[ProductLne] = []
total_ht: float = 0.00
class Config:
validate_assignment = True
@root_validator()
def set_total_ht(cls, values):
for item in values.get('articles'):
values['total_ht'] += item.so_total_ht
return values
一些数据
item_line1 = ProductLne(qtt_line=10, prix_unite=10.00)
item_line2 = ProductLne(qtt_line=10, prix_unite=12.00)
bon1 = Bon()
bon1.articles.append(item_line1)
bon1.articles.append(item_line2)
运行时
print(bon1.total_ht)
我得到:0.0,O.OO 想要220
如何让这个函数返回正确的值?
【问题讨论】:
-
错误在你的 for 循环中。您正在尝试从 cls 参数访问
ProductLne数据,但它不包含任何数据。查看我的回答了解更多详情。