Django 模型实例的保存方法不更新字段
Save method of Django model's instance does not update fields
我在保存 Django 模型实例时遇到问题。
在我的 models.py 中,我有:
class Thing(models.Model):
title = models.CharField(null=True,max_length=128)
text = models.TextField(null=True)
kind = models.CharField(max_length=32,null=False)
date = models.DateField(auto_now_add=True, blank=True)
而且,好吧,我只想用新值更新它的一个实例。我的 views.py 包含:
def updateThing(request):
...
message = request.POST.get('thing').encode('utf-8')
title = request.POST.get('title').encode('utf-8')
thingId = int(request.POST.get('thingId'))
item = Thing.objects.get(id=thingId)
if item:
if len(title) > 0:
item.title = title
item.message = message
item.save()
addToLog(request,"success update : " + message,False)
如果我在调用 updateThing 后显示日志(通过 addToLog 方法添加),我可以看到 "success update",这意味着找到了 Thing 实例,"message" (+消息)是新的,但我的实例仍然存储了旧值:当我显示它们时,显示旧消息和标题。
由于 Django 没有引发任何异常,我想这只是 .save() 的错误使用,但我不知道问题出在哪里。
我需要你的帮助来理解和更正我的代码。
谢谢
模型定义中缺少 message
字段,因此在视图中设置实例的值更新了内存中的属性,但保存它并没有保留它。
我在保存 Django 模型实例时遇到问题。
在我的 models.py 中,我有:
class Thing(models.Model):
title = models.CharField(null=True,max_length=128)
text = models.TextField(null=True)
kind = models.CharField(max_length=32,null=False)
date = models.DateField(auto_now_add=True, blank=True)
而且,好吧,我只想用新值更新它的一个实例。我的 views.py 包含:
def updateThing(request):
...
message = request.POST.get('thing').encode('utf-8')
title = request.POST.get('title').encode('utf-8')
thingId = int(request.POST.get('thingId'))
item = Thing.objects.get(id=thingId)
if item:
if len(title) > 0:
item.title = title
item.message = message
item.save()
addToLog(request,"success update : " + message,False)
如果我在调用 updateThing 后显示日志(通过 addToLog 方法添加),我可以看到 "success update",这意味着找到了 Thing 实例,"message" (+消息)是新的,但我的实例仍然存储了旧值:当我显示它们时,显示旧消息和标题。
由于 Django 没有引发任何异常,我想这只是 .save() 的错误使用,但我不知道问题出在哪里。
我需要你的帮助来理解和更正我的代码。
谢谢
模型定义中缺少 message
字段,因此在视图中设置实例的值更新了内存中的属性,但保存它并没有保留它。