gpt4 book ai didi

python - 尝试在数据库上进行更新时如何解决错误 'dict' 对象没有属性 'save'

转载 作者:行者123 更新时间:2023-12-01 08:29:06 25 4
gpt4 key购买 nike

我在使用 django 及其模型系统时遇到问题。我是 django 的新手,但我陷入了困境,因为我可能做错了事情。

我正在尝试更新我的数据库,但收到此错误:

“‘dict’对象没有属性‘保存’”

我只是尝试根据 html 上的检查输入将字段设置为事件或非事件状态。

我正在根据请求发送正确的值。

我得到的是字典而不是模型对象,但我真的不知道如何更改它,我想我遵循了 django 文档。一步一步来。

模型.py:

from django.db import models
class Flags(models.Model):
num = models.IntegerField(null=False)
deliver= models.CharField(max_length=1, null=False)

class Meta:
db_table ="FLAGS"

views.py:

from django.http import HttpResponse
from Logistic.models import Flags

def updateDisponibilidad(request):
flag = request.GET.get("flag")
print(flag)
disp = Flags.objects.using('default').values('num', 'deliver').get(num__exact=1)
print(disp)
disp['deliver'] = str(flag)
disp.save()
return HttpResponse(disponibilidad)

Django 文档。说我可以访问放置(在本例中)disp.deliver 的值,但是当我这样做时,我收到了不同的错误:

“dict”对象没有属性“deliver”

如果有人可以帮助我,这样我就可以使用此代码,那就太好了:

disp.deliver = flag
disp.save()

并与之合作。

最佳答案

这是由于查询中的 .values() 造成的,如果您想获取 Flags 对象,您应该将其删除,因此:

def updateDisponibilidad(request):
flag = request.GET.get("flag")
disp = Flags.objects.using('default').get(num=1) # <i>no</i> .values()
print(disp)
disp['deliver'] = str(flag)
disp.save()
return HttpResponse(disponibilidad)

如果您使用.values(),您将检索字典。这里我们检索一个 Flags 对象,模型对象有一个 .save() 方法来更新数据库中的对象。

如果要将内容呈现为 JSON 响应,则应使用 serializer ,而不是使用 Django ORM 功能。

此外,如果您更新实体,通常会使用 POST、PUT、PATCH 等请求,而不是 GET 请求。

关于python - 尝试在数据库上进行更新时如何解决错误 'dict' 对象没有属性 'save',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54012193/

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