2017-05-31 2 views
0

私は私のプロジェクトの「API」を生成するModelSerealizerを使用していますし、次のコードで説明したように、私はcasa = CasaLegislativa.objects.first()属性を持っている:他のアプリの後にアプリを実行するための移行順序を変更するにはどうすればよいですか?

Django.db.utils.ProgrammingError: relation "base_casalegislativa" does not exist 
:私は、私は次のエラーを取得する python manage.py migrateを実行すると

Class SessaoPlenariaSerializer (serializers.ModelSerializer): 

    # ... 

    casa = CasaLegislativa.objects.first() 

    # ... 

このエラーは、データベース内のCasaLegislativaクラスのテーブルを作成する前に、SessionPlenariaSerializerクラスのCasaLegislativa.objects.first()メソッドへの呼び出しが呼び出されたために発生します。

アプリ 'api'にはモデルはなく、移行もありません(他の移行に依存することはできません)が最初にアルファベット順にチェックされています。このアプリの「api」が他のアプリの後に実行されるように、移行の順序を変更するにはどうすればよいですか?

+0

問題を解決するのには役立ちませんが、アプリ名を呼び出すことで移行対象を指定できます。 ./manage.py YourAppNameを移行します。 – hansTheFranz

+1

これは移行順序とは関係なく、すべてのアプリケーションが移行される前に読み込まれます。この時点ではクエリを実行できません。クエリをメソッドに移動するか、遅延評価されたメソッドに置き換える必要があります。 – knbk

+0

@kbnk私はこのように解決しました。しかし、醜いハックのようだ。 –

答えて

0

私が見つけた解決策は、casa属性を取得し、get_casaメソッドにCasaLegislativa.objects.first()コールを渡すことでした。したがって、テーブルへの参照は実行時にのみ行われ、移行の問題を解決します。 良い解決策ではありませんが、問題を解決しました。

関連する問題