【发布时间】:2017-05-31 15:30:25
【问题描述】:
我正在使用 ModelSerealizer 生成我的项目的“api”,并且我有一个 casa = CasaLegislativa.objects.first () 属性,如下面的代码所述:
Class SessaoPlenariaSerializer (serializers.ModelSerializer):
# ...
casa = CasaLegislativa.objects.first ()
# ...
当我运行python manage.py migrate 时,出现以下错误:
Django.db.utils.ProgrammingError: relation "base_casalegislativa" does not exist
出现此错误是因为在为数据库中的 CasaLegislativa 类创建表之前调用了 SessionPlenariaSerializer 类的 CasaLegislativa.objects.first () 方法。
应用程序“api”没有模型也没有迁移(我不能使用对其他迁移的依赖),但首先检查它,因为它按字母顺序排在第一位。如何更改迁移顺序,以便此应用“api”在其他应用之后运行?
【问题讨论】:
-
我认为它不会帮助您解决问题,但您可以通过调用应用名称来指定要迁移的内容。所以 ./manage.py 迁移 YourAppName。
-
这与迁移顺序无关,所有应用程序都在尝试迁移之前加载。此时您无法执行查询。您需要将查询移动到一个方法中或将其替换为一个惰性求值的方法。
-
@kbnk 我这样解决了。但似乎是一个丑陋的黑客。
-
@hansTheFranz,这可能有效(尽管我的尝试失败了),但我需要这个自动化任务由作业运行(例如,在 travis、docker 中)
标签: python django django-migrations django-serializer