2016-02-02 43 views
2

引用的模型的查找失敗我得到這個錯誤。Django makemigrations:ValueError:由字段

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共享項目)。他們可以成功完成遷移。我們想知道爲什麼這發生在我的個人電腦上。

注:

  • 我是唯一一個我的團隊中遇到此。
  • 當我創建/更新模型,我不能makemigrations。所以,我必須將我的更改推送到回購站,以便他們在他們的計算機(它們不會遇到任何錯誤)中提取並執行遷移,並將遷移文件推送回購,以便我可以遷移它。 「
  • 」每次我們需要對模型進行任何更改時,我們都需要首先從回購庫中獲取任何最新的遷移文件,然後製作遷移文件以使它們具有成功的數字,因爲 - 「
  • 如果我們不'如果我們的遷移文件會因爲與其他遷移的依賴關係而出現很多錯誤,那麼我們必須刪除所有的遷移文件,刪除數據庫並再次進行makemigration(我們不知道如何處理這個,誠實地說)

解決方案,我們嘗試:

  • 刪除了本地數據庫
  • 重新安裝PSQL
  • 重新安裝的Django
  • 重新安裝Python的
  • 刪除回購和再克隆
  • 刪除所有遷移文件(這工作,但爲什麼呢?我們不想刪除所有遷移因爲它也會影響我們的直播現場。)

  1. 我們如何解決這個?

謝謝! :)

+0

似乎systech_account.Company couldnt被發現,可以分享你的項目文件夾結構或orm映射。 –

+0

這隻發生在我的最後,在我的其他隊友中他們可以成功進行移植。 – Binsoi

回答

2

我在這裏猜測systech_account.Company是一個模型,它在一個應用程序中尚未加載,同時嘗試爲另一個應用程序創建遷移。

如果是這樣的話它可能運行的其他makemigrations之前先運行

makemigrations app_that_has_company_in_it 

解決的。

但這不是解決方案。

事實上,你和你的同事都試圖做同樣的遷移告訴我,你不會將遷移存儲在你的源代碼管理中,這是真正的問題。

這樣做確實阻止了這些錯誤的發生(至少對我/我們來說),並且在嘗試進行遷移時會更快,因爲沒有任何重複的步驟。如果你擔心這些合併衝突,你不必擔心,django非常聰明。

+0

謝謝,我已經試過,但它不工作。每當我創建/更新模型時,讓我的隊友在他們的PC上執行遷移文件並從回購中提取遷移文件,以便我可以遷移。我的電腦出現了問題,我們可能無法確定它。我也嘗試從其他帳戶和克隆回購那裏,但仍然沒有運氣 – Binsoi

+0

@Binsoi - 你可能想看看你的gitignore,然後看看是否有任何內容不應該(即settings.py) – Sayse

+0

這是我們gitignore :) /.project的內容 * .pyc文件 ENV/pyvenv.cfg ENV/ winenv/ winvenv/ 根/ local_settings.py – Binsoi