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

时间:2017-09-24 02:18:53

标签: django

我希望在Django中创建/更新对象。我目前的代码如下所示:

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

originator设置为primary key的位置。这适用于第一次看到originator时创建新对象。但是,如果数据库中已存在originator,我想知道如何更新对象。基本上,如果primary key已存在update功能,但如果它不具有create功能。

我在这里寻找.create的替代方案。我无法在models documentation中找到如何执行此操作。可能吗?我知道我可以使用try / except但是我想知道django是否有另一种选择。

2 个答案:

答案 0 :(得分:2)

您可能想要的是update_or_create

@property (strong, nonatomic) UIViewController<DetailViewController> * detailViewController;
  

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

答案 1 :(得分:1)

尝试:Django的内置函数update_or_create

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