モデルが相互参照を含むいくつかのアプリケーションを含む非常に複雑なプロジェクトアーキテクチャを持っています。Django Migrations ValueError:[...]は、[...]への怠惰な参照で宣言されました
('premium', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='billing.Premium', verbose_name='premium'))
(このコードが来る: - billing
アプリに属している - その名を一つのフィールドに1を通じてpayments.PaymentJob
ある別のモデルによって参照される
例えば、私はbilling.Premium
モデルを持っていますpayment
の移行)
しかし、私は、私はbilling.PremiumInstallment
からbilling.Premium
の名前を変更する必要があると面白い部分が来るとき、これはいくつかのポイントになってきたのいずれかから:私の協力をリファクタリングした後、
ValueError: The field payments.PaymentJob.premium was declared with a lazy reference to 'billing.premium', but app 'billing' doesn't provide model 'premium'.
私の移行が破損しているように私は、外部アプリケーションのモデルの名前を変更したので、それが表示されます:・デ・モデル名を置き換えるために、私はそれが次のエラーにつながる、django-admin makemigrations
にしてみてください。私はこの方法を奇妙な方法で修正する方法がわかりません。エラーなしで移行を生成することを意味し、それはdjango-admin migrate
を実行したときに適用されます。
、しかしから別のモデルで参照されているモデルの名前を変更した後でエラーが解消され、参照がもう見つからないため、変更されたモデルが移行されません。あなたのエラーから、単純なアーキテクチャではなく、正しい手順を実行することができますので、これを見てください。https://stackoverflow.com/questions/25091130/django-migration-strategy-for-renaming-a-model-and-relationship-fields –
私はそうしましたが、すべてのモデルが同じアプリケーション内にあります。私は2つの分離されたアプリケーションで2つのモデルを持っています。私は記述された方法でリファクタリングすることはできません... –