8

データベース内の Django モデルのインスタンスを、サンプル データのロードに使用できるサンプル Python コードに "pickle" するにはどうすればよいですか?

私がしたいこと:
1) Django プロジェクトの MySQL データベースに保存した数百のレコードのスナップ
ショットを取得します 2) このスナップショットを取得し、その中のデータを変更します (名前を空白にします)
3) このデータを「ピクルス」に変換しますstring」または実際の python コードを使用して、新しいユーザー アカウントにデータを読み込むことができます。

私が実装しようとしている主な機能は、現在アクティブな Django Web サイト ユーザーの 1 人を選択し、そのデータの一部をコピーして匿名化し、それを Web サイトのすべての新規ユーザー向けのサンプル データとしてロードして、そのデータを使用できるようにすることです。システムの学習に役立ちます。

4

2 に答える 2

14

これを行う簡単な方法は、モデルを dict に変換することです。次に、それを簡単にピクルしてから、再インフレートして新しいモデル インスタンスを作成できます。

モデルを 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 に答える