首页 > 解决方案 > 为什么在 django shell 中保存后 QuerySet 不更新?

问题描述

所以今天,当我在学习数据库的 Django shell 接口时,我遇到了一个非常奇怪的问题。

即使在执行保存方法后,我也无法获取更新的数据。

我搜索了这个问题,但在所有这些查询中,他们缺少保存方法。

这是一些 django 更新问题还是我错过了什么?

>>> from hello.models import user
>>> user.objects.all()
<QuerySet []>
>>> user1 =  user("rins","rins@gmail.com","9995584433","2000-01-01")
>>> user1.save
<bound method Model.save of <user: rins@gmail.com>>
>>> user.objects.all()
<QuerySet []>

所以这是输出。如您所见,即使保存后用户对象仍为空白

这是我的模型

class user(models.Model):
    name=models.CharField(max_length=30)
    email=models.CharField(max_length=30)
    phone=models.CharField(max_length=11)
    dob=models.DateField()

标签: pythonpython-3.xdjangodjango-modelsdjango-shell

解决方案


这里有两个错误:

  1. 您没有调用该方法。您应该调用 .save(), (带括号);和
  2. 你不应该使用位置参数,特别是因为第一个参数通常是隐藏的id

在会话中,您可以这样写:

user1 = user(name='rins',email='rins@gmail.com',phone='9995584433',dob='2000-01-01')
user1.save()

注意:Django 中的模型是用 PerlCase 编写的而不是snake_case,因此您可能希望将模型从 重命名userUser


推荐阅读