迁移期间的Django问题 - 懒惰引用

Jam*_*nco 12 django django-models

我目前已将此模型添加到我的应用中

from mainApp.models import modelPatient

class modelBodyParts(models.Model):
    part_name             = models.CharField(max_length=1000, unique=False , default="")
    modelPatient          = models.ForeignKey(modelPatient)
    result                = models.CharField(max_length=3000, unique=False , default="")
Run Code Online (Sandbox Code Playgroud)

现在makemigrations和migrate命令给出了以下错误

 >>python manage.py makemigrations 
 >>python ./manage.py migrate

ValueError: The field interviewApp.modelInterviewAnswers.patients was declared with a lazy reference to 'mainApp.modelpatients', but app 'mainApp' doesn't provide model 'modelpatients'
Run Code Online (Sandbox Code Playgroud)

我不确定这意味着什么.但我确实记得,有一点mainApp.modelpatients存在,然后它被改变为mainApp.modelpatient 仍然存在.我如何解决这个问题,为什么会出现这个问题?任何帮助,将不胜感激.

Udi*_*Udi 5

尝试使用RenameModelRenameField。请参阅此处的答案:https ://stackoverflow.com/a/26241640/57952


fli*_*lix 5

对我来说,发生了这个错误,因为我正在从

my_field = models.ForeignKey('old.model', ...)
Run Code Online (Sandbox Code Playgroud)

my_field = models.ForeignKey('new.model', ...)
Run Code Online (Sandbox Code Playgroud)

解决方案是手动编辑生成的迁移,并将new应用程序中的最新迁移添加为依赖项:

class Migration(migrations.Migration):
    dependencies = [
        ('old', '0016_whatever'),
        ('new', '0002_latest_migration'),   # Add this line
    ]
Run Code Online (Sandbox Code Playgroud)

  • 当我尝试撤消跨应用程序添加的“ForeignKey”时,我遇到了@JamesFranco 的相同错误,并且您的解决方案有所帮助。Django 的自动迁移没有在“依赖项”中列出第二个应用程序,因此我必须手动添加它 (2认同)