Django 使用 key=value 选项修改对象
Posted
技术标签:
【中文标题】Django 使用 key=value 选项修改对象【英文标题】:Django modify objects using key=value options 【发布时间】:2021-06-10 20:37:26 【问题描述】:我正在对 Django 环境中的对象的传入数据修改请求(来自 DataTables 表)进行 http POST 处理。 POST 数据以 key=value 对的形式提供给我。
我遇到的问题是我还没有找到一种方法将它变成我可以使用的东西。 Django 对象和修改是这样完成的:
id = 123
item = Stuff.objects.get(id=id)
item.title = "New Title"
item.save()
我有以下数据属性:
id = 123
attribute = "title"
value = "New Title"
如何使用它们来修改 Django 对象?
【问题讨论】:
【参考方案1】:更有效的方法是:
id = 123
attribute = 'title'
value = 'New Title'
Stuff.objects.filter(id=id).update(**attribute: value)
这将防止首先通过查询获取对象,然后对其进行更新。
如果您仍然需要加载对象,可以使用setattr(…)
[Python-doc]:
id = 123
attribute = 'title'
value = 'New Title'
item = Stuff.objects.get(id=id)
setattr(item, attribute, value)
item.save()
【讨论】:
【参考方案2】:尝试使用类似的 if 语句
If attribute = 'title'
item.title = value
item.save()
【讨论】:
以上是关于Django 使用 key=value 选项修改对象的主要内容,如果未能解决你的问题,请参考以下文章
【vue】为啥要使用Vue.$set(target,key,value)