【问题标题】:Why is the QuerySet not updating after save in django shell?为什么在 django shell 中保存后 QuerySet 不更新?
【发布时间】:2021-01-16 12:02:33
【问题描述】:

所以今天,当我在学习数据库的 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()

【问题讨论】:

  • 您没有调用该方法。你应该打电话 .save(),(所以用括号)。
  • 此外,您不应使用位置参数,尤其是因为第一个参数通常是隐藏的id
  • @WillemVanOnsem 这是我老师今天教的:(

标签: python python-3.x django django-models django-shell


【解决方案1】:

这里有两个错误:

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

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

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

注意:Django 中的模型是用 PerlCase 编写的,而不是 snake_case, 所以您可能想将模型从 user 重命名为 User

【讨论】:

  • 非常感谢!我应该将此告知教授并让我的同学知道。
  • user1.save - 它是否适用于以前的版本?因为如果是的话,那么我可能不应该告诉老师他们错了
  • @SandrinJoy:不,至少从 1.8 开始,当我开始使用 Django 时,自 2018 年 4 月起不再支持。
猜你喜欢
  • 2017-04-27
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多