[英]How do I “pickle” instances of Django models in a database into sample python code I can use to load sample data?
如何在数据库中“pickle”Django模型的实例到我可以用来加载样本数据的示例python代码?
我想要:
1)拍摄我存储在MySQL数据库中的几百条记录的快照,用于Django项目
2)拍摄此快照并修改其中的数据(消隐名称)
3)将此数据转换为“pickled string”或实际的python代码,我可以使用它将数据加载到新的用户帐户。
我试图实现的主要功能是选择我当前活跃的Django网站用户之一,复制和匿名他们的一些数据,然后将其作为网站所有新用户的样本数据加载,以便他们可以使用该数据帮助学习系统。
一种简单的方法是将模型转换为字典。 然后,你可以轻而易举地腌制它,然后重新膨胀它以创建新的模型实例。
要将模型存储为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')])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.