0

我有必须更新许多记录的情况。但问题是我必须更新那些有一些变量作为输入的字段。如果任何传入字段都没有,那么它不应覆盖其现有的数据库值。

new_code = None
new_type = "new values"

user.objects(query).update(set__type=new_type ,set__code=new_code) 

上面的查询返回 10 条记录,但我只想更新类型,因为它有一个值。但代码值不应在 db 中更新。因为它的变量是无(来自用户输入表单)

我必须做一些 if else 条件

在 db 中,我有 type=old,code=111 之类的记录,因为 new_code 没有作为输入出现,因此它应该只更新 type 并且 db 应该看起来像 type = new values ,code = 111

4

1 回答 1

0

您需要在更新之前清理用户输入 - None 是要存储的有效数据类型和值。

由于这些只是 kwargs,您可以构建一个您想要更新的字典:

update = {}
if new_type:
    update['set__new_type' = new_type
if new_code:
    update['set__new_code' = new_code

user.objects(query).update(**update)
于 2012-10-17T13:30:26.867 回答