繁体   English   中英

如何在数据库中“pickle”D​​jango模型的实例到我可以用来加载样本数据的示例python代码?

[英]How do I “pickle” instances of Django models in a database into sample python code I can use to load sample data?

如何在数据库中“pickle”D​​jango模型的实例到我可以用来加载样本数据的示例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.dumpspickle.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM