如何加载 django 夹具并删除不存在的对象?

问题描述 投票:0回答:1
  1. 我有一个带有对象 1,2 的夹具并加载了它
  2. 我更新了装置,现在它包含对象 2,3

问题:如何加载删除对象1的新夹具?我无法截断表,因为我有相关对象。

当然我可以解析夹具并删除所有不存在的对象,但也许有更简单的方法?

django django-models django-fixtures
1个回答
0
投票

我意识到这个问题很老了,但我们最近也不得不处理这个问题。

简短的回答是没有办法使用 django 的

loaddata
命令来做到这一点。在您给出的示例中,将会发生以下情况:

  • “2”将会更新
  • “3”将被创建
  • “1”将不受欢迎地继续存在

处理此问题的一个相对简单的方法是创建一个表示集合标识符的列,例如整数字段。在我们的例子中,我们使用“修改的”时间戳列,因为我们以不同的方式上传数据,但概念是相同的。

您的新灯具数据为灯具中与前一组不同的每个条目提供一个组标识符。运行迁移或脚本,然后删除具有不同或旧设置标识符的任何内容。

如果您像我们一样使用时间戳,请删除时间戳早于今天的任何内容,或您想要使用的任何阈值(我们每 2 个月更新一次,因此不存在意外删除仍需要的内容的危险)。

© www.soinside.com 2019 - 2024. All rights reserved.