8

如何将数据库中的 Django 模型实例“腌制”到可用于加载示例数据的示例 python 代码中?

我想:
1) 为 Django 项目的 MySQL 数据库中存储的数百条记录
拍摄快照 2) 拍摄此快照并修改其中的数据(删除名称)
3) 将此数据转换为“腌制字符串”或实际的 Python 代码,我可以使用它们将数据加载到新用户帐户中。

我正在尝试实现的主要功能是选择我当前活跃的 Django 网站用户之一,复制并匿名化他们的一些数据,然后将其作为示例数据加载给网站的所有新用户,以便他们可以使用该数据帮助学习系统。

4

2 回答 2

14

一个简单的方法是将模型转换为字典。然后,您可以简单地腌制它,然后重新膨胀它以创建新的模型实例。

要将模型存储为 dict,您可以使用内置的 Django 函数:

from django.forms.models import model_to_dict
my_dict = model_to_dict(my_instance,fields=[],exclude=[])

将实例转换为 dict 并编辑必要的内容后,只需使用普通的pickle.dumpspickle.loads方法来存储和检索数据。要使用该字典创建新模型实例,您可以执行以下操作:

my_instance = MyModel(**my_dict)
#add any customization for the new instance here
my_instance.save()
于 2012-01-25T23:30:11.673 回答
3

在 Django 1.8 及更高版本上,如果你的模型有外键,你可以使用:

my_dict = dict([(f.attname, getattr(instance, f.attname))
               for f in instance._meta.get_fields()
               if hasattr(f, 'attname')])
于 2015-08-05T15:19:55.817 回答