2015-11-03 8 views
15

を解決することはできません。どちらもINSTALLED_APPSにあり、最初にookです。 ook.models.pyとValueError:関連モデルu'app.modelは、」私は二つのアプリケーション(<code>ook</code>と<code>eek</code>が言う)を持っていると私は<code>eek</code>でモデルから<code>ook</code>でモデルへの外部キーを使用したい

、私が持っている:eek.models.py

class Fubar(models.Model): 
    ... 

を、私が持っている:

class monkey(models.Model): 
    external = models.ForeignKey('ook.Fubar', blank=True, null=True) 
    ... 

移行が生成されます。

class Migration(migrations.Migration): 

    dependencies = [ 
     ('eek', '0002_auto_20151029_1040'), 
    ] 

    operations = [ 
     migrations.AlterField(
      model_name='monkey', 
      name='external', 
      field=models.ForeignKey(blank=True, to='ook.Fubar', null=True), 
     ), 
    ] 

私は、マイグレーションを実行すると、私が手このエラー:

... 
    1595    raise ValueError('Foreign Object from and to fields must be 
the same non-zero length') 
    1596   if isinstance(self.rel.to, six.string_types): 
-> 1597    raise ValueError('Related model %r cannot be resolved' % self.rel.to) 
    1598   related_fields = [] 
    1599   for index in range(len(self.from_fields)): 
ValueError: Related model u'ook.Fubar' cannot be resolved 

私は間違っていますか?

+0

'ook'と' eek'はsettings.py' 'でINSTALLED_APPS''に含まれていますか? – Leistungsabfall

+0

@ Leistungsabfall:はい、彼らは 'ook'が' eek'の前です。 – Sardathrion

+0

'ook.models.Foobar' maybe? – cdvv7788

答えて

32

あなたが操作でForeignKeyを持っているので、あなたが追加する必要がありますookdependenciesへ:

dependencies = [ 
    ('ook', '__first__'), 
    ('eek', '0002_auto_20151029_1040'), 
] 

Djangoのマイグレーション持つ二つの "魔法" の値:

  • __first__ - 最初の移行をモジュール取得
  • __latest__ - getモジュールの最新の移行
+0

「__ファースト_」とはどういう意味ですか?私は同じ問題がありますが、それは私のために働いていません –

+1

@ Harun-Ur-Rashidは私の編集を参照してください –

+0

ああ、多くの多くの感謝@トーマス。 __latest__は私のために働く –

4

同じエラーが発生しましたが、同じマイグレーションの一部として宣言されたモデルを参照しています。最初にmigrations.CreateModel(...)がまだ宣言されていないモデルと呼ばれていたことが判明しました。私は手動で参照されたモデルの宣言の下にこれを移動し、すべて正常に働いた。

0

私は、このバグは、まだ下にスクロールするときに修正されていないように見えます。

Django ValueError: Related model cannot be resolved Bug

私は彼らが1.9.3について話している、1.11.7を使用しています。

これはローカルホスト上のすべてを処理しましたが、常にHerokuで失敗していたので、上記のすべてのオプション/答えをテストしましたが、何も機能しませんでした。

私は気付きました。管理者のlocalhost DBに1つのプロファイル(1つのDBレコード)が作成されていて、Herokuに行ってDBにプロファイルテーブルのレコードが0であるため、1を追加してマイグレーションをプッシュし、すべてがOKになりました。

これは、手動でこれらの移行を手動で変更する必要がないことを検証しています。

多分それは誰かに役立つでしょう。

移行

# -*- coding: utf-8 -*- 
# Generated by Django 1.11.7 on 2017-11-23 21:26 
from __future__ import unicode_literals 

from django.db import migrations, models 
import django.db.models.deletion 


class Migration(migrations.Migration): 

    dependencies = [ 
     ('blog', '0005_blog_author'), 
    ] 

    operations = [ 
     migrations.AlterField(
      model_name='blog', 
      name='author', 

field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, 
to='core.Profile'), 
     ), 
    ] 
関連する問題