Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“我该怎么做?”;泡菜“;将数据库中Django模型的实例转换为可用于加载示例数据的示例python代码?_Python_Django_Pickle_Sample Data - Fatal编程技术网

“我该怎么做?”;泡菜“;将数据库中Django模型的实例转换为可用于加载示例数据的示例python代码?

“我该怎么做?”;泡菜“;将数据库中Django模型的实例转换为可用于加载示例数据的示例python代码?,python,django,pickle,sample-data,Python,Django,Pickle,Sample Data,如何将数据库中Django模型的实例“pickle”到可用于加载示例数据的示例python代码中 我想: 1) 为Django项目拍摄我存储在MySQL数据库中的数百条记录的快照 2) 拍摄此快照并修改其中的数据(删除名称) 3) 将此数据转换为“pickle string”或实际的python代码,我可以使用这些代码将数据加载到新的用户帐户中。 我正在尝试实现的主要功能是选择我当前活跃的Django网站用户之一,复制并匿名他们的一些数据,然后加载这些数据作为网站所有新用户的样本数据,以便他们可

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

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


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

一个简单的方法是将模型转换为dict。然后,您可以简单地对其进行pickle,然后重新膨胀以创建新的模型实例

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

from django.forms.models import model_to_dict
my_dict = model_to_dict(my_instance,fields=[],exclude=[])
将实例转换为dict并编辑必要的内容后,只需使用普通的
pickle.dumps
pickle.loads
方法来存储和检索数据。要使用该dict创建新的模型实例,可以执行以下操作:

my_instance = MyModel(**my_dict)
#add any customization for the new instance here
my_instance.save()

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

my_dict = dict([(f.attname, getattr(instance, f.attname))
               for f in instance._meta.get_fields()
               if hasattr(f, 'attname')])

这听起来很像。。。Django可以导出JSON格式的数据。使用Django自己的内部序列化要容易得多。为什么不简单地使用Python的
dumpdata
loaddata
内置命令呢?请注意,如果dict包含外键,则无法从它创建新模型,因为它会引发值错误