【问题标题】:Django - Can a query update delete an existing record?Django - 查询更新可以删除现有记录吗?
【发布时间】:2011-11-15 18:45:41
【问题描述】:

在我的views.py中我有这样的东西:

 a = Profile.objects.get(user=request.user.id)
 a.avatar = avatar.id
 a.save()

据我所知,当我执行 save() 时,如果已经存在具有该特定用户 ID 的记录,它应该只使用 avatar.id 更新现有记录。

我不知道为什么,但是当我运行上述代码时,现有记录会被删除。我这样做对吗?

【问题讨论】:

  • .save() 应该更新,而不是删除
  • save() 不能删除,除非它被覆盖或发生其他事情。如果您从交互式 shell(manage.py shell)中尝试,上面的代码会删除记录吗?
  • @julio.alegria avatar 是我存储用户头像的 id 号的字段。换句话说,它是一个整数字段。

标签: django django-views django-queryset


【解决方案1】:

发现答案是否定的

我使用了manage.py shell 并运行了上面的代码,它并没有删除记录。但我发现它上面的另一个代码正在造成损害。

我有这样的事情:

avatar = Avatar.objects.create(user = a_user)
avatar.delete()

Profile 模型与 Avatar 具有外键关系。因此,当我执行 avatar.delete() 时,当我认为它只删除了 Avatar 模型的记录时,它也删除了相关的 Profile 记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多