django 有没有内置用字典更新模型的方法

2014-04-25 16:46:11 +08:00
 magine
比如 字典A 存有要更新的键值对,然后:

Model_foo.objects.get(pk=some_pk).update_by_dict(dict_A)
4359 次点击
所在节点    Django
8 条回复
yueyoum
2014-04-25 16:54:28 +08:00
Model_foo.objects.filter(pk=some_pk).update(**dict_A)
yueyoum
2014-04-25 16:55:09 +08:00
当然,A 的key 只能是 Model_foo的 fields, 如果有key不是,自己去除
magine
2014-04-25 18:21:56 +08:00
@yueyoum get()获取的单个对象也能用吗?
allenling
2014-04-26 00:28:24 +08:00
不是有个save(update_fields=[some_fields])吗?
yueyoum
2014-04-26 14:33:35 +08:00
@magine

没记错的话, update 只能用在 queryset 上, get 获取的是单个对象 不是 queryset ,所以不能用。

filter().update() 就行, 翻译成 SQL就是

update TABLE set A=1, B=2 where id = ...
magine
2014-05-03 08:55:48 +08:00
@yueyoum

theType, created = Type.objects.get_or_create(
num=new_type_dic['num'],
defaults=dict(
name=new_type_dic['name'],
manufacturer=new_type_dic['manufacturer'],
pattern=new_type_dic['pattern'],
standard=new_type_dic['standard'],
))

if created==True:
info['new_type_num'] = theType.num
else:
Type.objects.filter(num=theType.num).update(new_type_dic)

先检查是否已有设备类型(Type),如果没有就新建,并在info中留下记录,否则就用字典数据更新。
这样写有没有冗余?或者说不合理?
magine
2014-05-03 09:11:56 +08:00
https://gist.github.com/Ma233/f9a763e5199109503174

贴一份容易看的代码出来……
37Y37
2018-07-11 09:02:34 +08:00
__dict__.update 了解一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/110027

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX