【问题标题】:error :object can't be deleted because its id attribute is set to None错误:无法删除对象,因为它的 id 属性设置为 None
【发布时间】:2019-02-11 13:33:42
【问题描述】:

尝试在 django 中使用 shell 删除对象。如何删除对象说“Ron”?

我使用以下命令:

t.delete('Ron')

【问题讨论】:

  • 这里的t 是什么?
  • 在我看来,您一开始就从未保存过它。
  • 我怀疑 OP 正在做 t = Model(name="Ron") 并认为这是在做一个 get 而不是实例化一个新对象。

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


【解决方案1】:

错误:

无法删除对象,因为它的 id 属性设置为 None

建议您要么一开始就没有保存对象t,要么手动将主键(此处为id)更改为None

如果你有一个对象,你可以在对象上执行.delete(),例如:

my_obj = Model.objects.get(name='Ron')
my_obj.delete()

您应该delete 添加额外参数,usingkeep_parents 除外,如documentation for Model.delete() 中指定的那样

或者您可以使用.filter(..) 语句删除对象,例如:

Model.objects.filter(name='Ron').delete()

这将删除 所有 Model 名称为 'Ron' 的对象。

【讨论】:

  • 这发生在我身上,djongo 并不总是自动创建主键
猜你喜欢
  • 2010-10-01
  • 2018-12-17
  • 2021-05-27
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2017-04-14
相关资源
最近更新 更多