你如何有条件地修改/更新 django 中的对象?



我想在Django中创建/更新一个对象。我当前的代码如下所示:

SlotFilling.objects.create(
originator=textobject.originator,
empty_slot=True,
)

originator被设置为我的primary key的地方。这适用于首次看到originator时创建新对象。但是,我想知道如何更新对象,如果数据库中已经存在originator。基本上,如果primary key已经存在update功能,但如果不存在,则create功能。

我正在寻找.create的替代方案。我在模型文档中找不到如何执行此操作。可能吗?我知道我可以使用try/except 但我想知道django是否有替代方案。

你可能想要的是update_or_create

SlotFilling.objects.update_or_create(originator=textobject.originator, defaults = {empty_slot: True} )

update_or_create 方法尝试从数据库中获取对象 基于给定的夸格。如果找到匹配项,则会更新字段 在默认字典中传递。

尝试:Django的内置函数为此update_or_create

SlotFilling.objects.update_or_create(originator=textobject.originator, defaults = {empty_slot: True})

最新更新