Django 1.4:如何忽略loaddata中的字段和模型

Iam*_*ool 7 python django django-models django-fixtures

我们有一个15MB上传的压缩转储数据提取到100MB.它几乎没有在当前表中使用的模型和字段.

具体来说,contenttypes可以忽略的模型很少,并且field_在模型中可以忽略一个字段.

Django 1.5用户-ignorenonexistent可以安全地完成忽略工作.但是如何在1.4中有效地做到这一点?

小智 -1

在 Django 1.4 中,您不能使用 --ignorenonexistent 选项,因为它是在 Django 1.5 中引入的。但是,您可以通过自定义数据加载过程来实现类似的结果。这是一个一般方法:

过滤掉不必要的模型和字段:在加载数据转储之前,从转储文件中过滤掉不必要的模型和字段。您可以使用 grep、awk 或 sed 等工具来执行此过滤。

加载过滤的数据转储:获得过滤的转储文件后,使用 loaddata 管理命令将其加载到数据库中。

以下是如何使用 grep 和 sed 过滤掉不必要的模型和字段的示例:

# Filter out specific models from the dump
grep -v '"model": "app_name.model_name"' original_dump.json > filtered_dump.json

# Remove specific fields from the dump
sed -i 's/"field_name": .*,//g' filtered_dump.json

# Load the filtered data dump
python manage.py loaddata filtered_dump.json
Run Code Online (Sandbox Code Playgroud)

将“app_name.model_name”替换为您要忽略的模型的名称,将“field_name”替换为您要忽略的字段的名称。

这种方法允许您自定义数据加载过程,以从数据转储中排除特定模型和字段,从而有效地实现与 Django 1.5 中的 --ignorenonexistent 选项相同的结果。