it-swarm.dev

ValueError: İlgili model u'app.model 'çözülemiyor

İki uygulamam var (ook ve eek demek) ve ook modelindeki eek modelinde bir yabancı anahtar kullanmak istiyorum. Her ikisi de ilk önce ook ile INSTALLED_APPS içinde.

ook.models.py içinde, var:

class Fubar(models.Model):
    ...

eek.models.py içinde, var:

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

Üretilen göç:

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),
        ),
    ]

Taşıma işlemini çalıştırdığımda şu hatayı alıyorum:

   ...
   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

Neyi yanlış yapıyorum?

25
Sardathrion

Operasyonlarda ForeignKey olduğundan, ook öğesine dependencies eklemelisiniz:

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

Django geçişlerinin iki "sihirli" değeri vardır:

  • __first__ - modül ilk göçünü alır
  • __latest__ - modülün son geçişini al
50

Her model için geçişleri tek tek çalıştırmayı deneyin.

Bu şekilde sorunla karşılaştığınız app hata ayıklamasını yapabilirsiniz.

python manage.py migrate appmname
4

Ben de aynı hatayı aldım, ancak aynı geçişin bir parçası olarak ilan edilen bir modele atıfta bulundum. İlk migrations.CreateModel(...) öğesinin henüz ilan edilmemiş bir modele gönderme yaptığı ortaya çıktı. Bu modeli belirtilen modelin ilanının altına elle taşıdım ve sonra her şey yolunda gitti.

4
decibyte

Temel bir modelin alt modelini yabancı anahtar olarak kullanmaya çalışırken bu hatayla karşılaştım. İşe yaramazsa mantıklı çünkü çocuk modelinde bir kimlik alanı yok. Benim düzeltmem anahtar üzerindeki üst kullanmaktı. Ne yazık ki bu hemen sezgisel değildi ve beni birkaç saat geri ayarladı. 

0
Braden Holt

Aşağıya doğru indiğinizde bu hatanın henüz çözülmediğini fark ettim.

Django ValueError: İlgili model çözülemiyor Hata

1.11.7 kullanıyorum, 1.9.3 hakkında konuşuyorlar. 

Localhost'ta her şey işe yaradı ama Heroku'da her zaman başarısız oldu, bu yüzden yukarıdaki tüm seçenekleri/cevapları test ettim ve hiçbir şey işe yaramadı. 

Sonra farkettim, Admin localhost DB 1 profil oluşturdum (1 DB kaydı), Heroku'ya gitti ve DB'nin Profil tablosu için 0 kaydı vardı, ben de 1 ekledim, göçü ittirdim, python manage.py migrat ve hepsi gitti TAMAM.

Bu, bu göçlerin hiçbirini, hepsinin çalıştığını el ile değiştirmem gerekmediğini doğruladı. 

Belki birine yardım eder.

göçler

# -*- 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'),
        ),
    ]
0
Radek