8

次の移行があります(簡単にするためにロジックを削除しました):

def migrate_existing_discounts(apps, _):
    ModelA = apps.get_model('myapp', 'ModelA')
    ModelB = apps.get_model('myapp', 'ModelB')

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0071_auto_20160531_1342'),
    ]

    operations = [
        migrations.RunPython(migrate_existing_discounts)
    ]

実行すると、次の例外が発生します。

LookupError: App 'myapp' doesn't have a 'modelb' model.

ModelAから継承されmodels.Model、正常にロードされました。一方、TranslatableModelModelBから継承しているため、壊れます。(2 年前) 移行で抽象クラス ( ticket#21786およびticket#21519 ) のロードに問題があり、TranslatableModel がその 1 つであることを読みました。

以前にこの問題が発生したことがあり、代わりに RunSQL に移行することになりましたが、モデルを適切にインポートする方法を知りたいです。方法があるはずです。

注: パッケージdjango-hvadには移行がないため、追加する依存関係はありません。

4

1 に答える 1

0

すべての移行が最初から最後まで実行されている場合、参照しているモデルがまだ新しいデータベースに存在していない可能性があります。移行内の依存関係リストを更新して、それらのモデルが定義されているアプリの最後の移行ファイルを参照します。

于 2020-04-30T01:41:45.043 に答える