gpt4 book ai didi

python - update_or_create 在循环中只更新/创建数据库中的一行

转载 作者:太空宇宙 更新时间:2023-11-04 03:12:13 24 4
gpt4 key购买 nike

这是我的设置模型...基本上我将设置存储为多行中的键值对

class Settings(models.Model):
key = models.CharField(max_length=50 , default='' ,unique=True )
value = models.TextField(default='')

所以当我想保存设置时,我想为每个键更新或创建一行(如果键已经存在,则更新它的值,如果不使用给定的键、值创建新行)

这是我的 View 代码

    jsetting = request.POST.get('jsetting' , None)
if(jsetting is not None):
setting = json.loads(jsetting)
for k,v in dict.items(setting):
print(str(k) +' -> '+ str(v))
Settings.objects.update_or_create({'key':k , 'value':v})

问题是目前它只保存或更新设置字典中的最后一项...所以当它通过 dic 循环完成时,我在数据库中只有 1 行!

我试图在循环中创建一个新的 Setting 实例

        for k,v in dict.items(setting):
s = Settings()
s.objects.update_or_create({'key':k , 'value':v})

但显然我不能这样做,我得到了这个错误

Manager isn't accessible via Settings instances

最佳答案

我没有使用过update_or_create,但是根据the docs ,似乎除了要更新的值之外,您还必须使用一个或多个关键字参数来获取或创建对象。

所以这可能有效:

Settings.objects.update_or_create(key=k, defaults={'value':v})

关于python - update_or_create 在循环中只更新/创建数据库中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37645729/

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