我的问题围绕数据库中的“产品”模型,其中某些值(例如描述)是可选的,可以包含字符串或空值。我已经为产品创建了一个更新函数,当我尝试使用 PATCH 或 PUT 方法实现部分更新时,问题就出现了。
例如,如果我有一个带有描述的产品,并且我希望通过删除描述来更新它,我的方法是发送带有“描述:null”的请求。然而,这种方法的问题在于,部分更新请求将其解释为不想将 null 分配给描述,而是作为根本不修改描述字段的信号。
有谁知道我该如何解决这个问题?
您可以使用
exclude_unset
的 model_dump
参数来实现该行为。
在端点中调用
product_data.model_dump(exclude_unset=True)
,它将返回 dict
,其中仅包含在输入数据中显式设置的属性。
迭代这些属性并仅更新它们。
因此,如果您需要更新产品并保持
description
不变,则只需在发送到端点的数据中省略此字段即可。
如果您需要删除描述 - 将此字段设置为空。