Django makemigrations:ValueError:字段引用的模型的查找失败

时间:2016-02-02 06:07:44

标签: django django-migrations

我收到了这个错误。

  Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 390, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 441, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/makemigrations.py", line 125, in handle
    migration_name=self.migration_name,
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/autodetector.py", line 43, in changes
    changes = self._detect_changes(convert_apps, graph)
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/autodetector.py", line 110, in _detect_changes
    self.old_apps = self.from_state.concrete_apps
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/state.py", line 158, in concrete_apps
    self.apps = StateApps(self.real_apps, self.models, ignore_swappable=True)
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/state.py", line 236, in __init__
    raise ValueError(msg.format(field=operations[0][1], model=lookup_model)) ValueError: Lookup failed for model referenced by field systech_account.User.companies: systech_account.Company

每次我尝试

  

python manage.py makemigrations

在我的(Ubuntu)中。但是当我尝试在我的Windows和他们的同事(Ubuntu)上运行它时,它可以正常运行。 (*我们通过Git repo分享项目)。他们可以成功地进行迁移。我们想知道为什么这会发生在我的电脑上。

注意:

  • 我是团队中唯一遇到这种情况的人。
  • 当我创建/更新模型时,我无法进行移动。因此,我必须将我的更改推送到repo,以便他们在他们的计算机中拉动和制作他们的计算机(他们不会遇到任何错误)并将迁移文件推送到repo,这样我就可以迁移它。
  • “每当我们需要对模型进行任何更改时,我们需要首先从repo中获取任何最新的迁移文件,然后创建迁移文件,以便它们具有后续数字,因为 - ”
  • 如果由于与其他迁移的依赖关系,我们的迁移文件不会出现这么多错误,那么我们必须删除所有迁移文件,删除数据库并再次进行makemigration。(我们不知道如何处理老实说)

我们尝试过的解决方案:

  • 删除了本地数据库
  • 重新安装PSQL
  • 重新安装Django
  • 重新安装Python
  • 删除了回购并再次克隆
  • 删除了所有迁移文件(这有效但为什么?,我们不想删除所有迁移,因为它也会影响我们的实时网站。)
  1. 我们如何解决这个问题?
  2. 谢谢! :)

1 个答案:

答案 0 :(得分:2)

我将在这里猜测systech_account.Company是一个在应用程序中尚未加载的模型,同时尝试为其他应用程序创建迁移。

如果这是真的,首先运行

可能是可以解决的
makemigrations app_that_has_company_in_it

在运行其他makemigrations之前。

但这不是解决方案。

您和您的同事都在尝试进行相同的迁移这一事实告诉我,您不会将迁移存储在源代码管理中,这是真正的问题。

执行此确实可以阻止这些错误发生(至少对我/我们而言)并且在尝试进行迁移时更快,因为没有任何重复的步骤。如果你担心与这些合并冲突,你不必担心,django非常聪明。