Django模型实例的Save方法不更新字段

时间:2015-02-01 19:52:57

标签: django django-models django-views

我在保存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方法添加),我可以看到"成功更新",这意味着找到了Thing实例,"消息& #34; (+ message)是新的,但我的实例仍然存储旧值:当我显示它们时,会显示旧的消息和标题。

由于Django没有引发任何异常,我认为它只是对.save()的错误使用,但我不知道问题是什么。

我需要你的帮助来理解和纠正我的代码。

谢谢你

1 个答案:

答案 0 :(得分:1)

模型定义中缺少message字段,因此在视图中设置实例的值会更新内存中的属性,但保存它并不会保留它。