gpt4 book ai didi

python - 如何使用 Django 在模型对象中分配项目?

转载 作者:太空狗 更新时间:2023-10-29 20:36:38 25 4
gpt4 key购买 nike

是否可以覆盖模型中的值?我收到 'MyModel' 对象不支持项目分配。

my_model = MyModel.objects.get(id=1)
print my_model.title

if my_model.is_changed:
my_model['title'] = 'something' # 'MyModel' object does not support item assignment

params = {
'my_model': my_model,
...
}
return render(request, 'template.html', params)

最佳答案

模型是对象,不是字典。直接在它们上设置属性:

if my_model.is_changed:
my_model.title = 'something'

或者,如果属性名是动态的,使用setattr:

attr_name = 'title' # in practice this would be more complex
if my_model.is_changed:
setattr(my_model, attr_name, 'something')

这会更改模型的内存副本,但不会更改数据库 - 因为您的属性必须是一个字段并且您会调用 save my_model 上的方法。如果您只想更改模板在其上下文中接收的内容,则不需要这样做,但只是为了完整起见:

if my_model.is_changed:
my_model.title = 'something'
my_model.save()

字典是可变的,如果你真的有字典的话:

mydict = {'title': 'foo'}
# legal
mydict['title'] = 'something'

但并非一切都是字典。

关于python - 如何使用 Django 在模型对象中分配项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18759476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com