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

标签 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 实例,“消息”(+消息)是新的一,但我的实例仍然存储了旧值:当我显示它们时,会显示旧消息和标题。

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

我需要您的帮助来理解和更正我的代码。

谢谢你

最佳答案

模型定义中缺少 message 字段,因此在 View 中设置实例上的值更新了内存中属性,但保存它并没有持久化它。

关于django - Django模型实例的Save方法不更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28267128/

相关文章:

python - Django: 'module' 对象没有属性 'index'

python - Django 获取 ImageField 路径

python - 将图标添加到 Django 模板表中的特定行

django - 为 Django 开发服务器设置 New Relic

python - 如何在django中更改上传文件的名称和存储位置

python - 在 Django 迁移创建期间忽略 CharField "choices"中的更改

python - 扩展 Django 用户模型无法访问属性

python - 检测 Django 模型中的字段变化

python - Django:模型更新时表单值不更新

django - 为什么 Django 重定向测试失败?