8

ここで述べたように、オブジェクトは、他のモデルとの OneToOne 関係を持つモデルに対して自動的に作成されます。したがって、Model2 への O2O を持つ Model1 があり、pk=1 の Model2 のオブジェクトを作成すると、model2_id=1 の Model1 のオブジェクトが自動的に作成されます。次に、DB から json にデータをダンプすると、これらのオブジェクトに対して 2 つのレコードが作成されます。そして、このデータを - で DB にロードしようとするloaddataと失敗します。Model2 のオブジェクトが 2 回作成され、一意のインデックス違反とIntegrityError.
誰かがこれに対する正気の解決策を見つけましたか?

ps
私はDjango 1.3.7を使用しています

4

4 に答える 4

4

JSONではなくxmlで同様のことを行いました.私のdjangoは1.7なので、うまくいかないかもしれません.

  1. シリアル化されたオブジェクトを参照する場合は、自然キーを使用できます。これにより、インデックスが他のオブジェクトによって既に使用されている場合にアイテムが混同されるのを防ぐことができます。
  2. 依存関係を使用して、シリアル化 (および逆シリアル化) の順序を定義できます。

このような同様の投稿も役立つかもしれません。

于 2013-11-01T23:21:37.813 に答える
2

データ フィクスチャをダンプするときは、必ず --natural 引数を使用してください。

python manage.py dumpdata myapp --indent=4 --natural

https://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-option---natural

--natural-foreign の 1.7 で廃止されたようです

于 2013-11-04T21:13:01.267 に答える
0

データ移行を簡単かつ強力にする South を使用することになるかもしれません。

http://south.readthedocs.org/en/latest/about.html

Django 1.6 では、新しい移行モジュールが古いデータベース コマンドを置き換え、South を廃止します。

于 2013-10-30T09:00:16.163 に答える