Django从现有表中建模外键

时间:2015-07-27 11:04:22

标签: python django django-models django-registration

在我的django项目中,我使用了django-registration可重用的应用程序。我安装此应用程序并运行syncdb。它为我创建了表&registration ;registrationprofiles'在我的数据库中。然后我创建一个新的应用程序并在models.py中编写此代码:

class Comments(models.Model):
    text = models.TextField()
    pub_date = models.DateTimeField(auto_now=True)
    user = models.ForeignKey('registration_registrationprofiles')

运行manage.py makemigrations,它会让我异常:

ERRORS:
comments.Comments.user: (fields.E300) Field defines a relation 
with model 'registration_registrationprofiles', which is either
not installed, or is abstract.

我如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

试试这个:

from registration.models import RegistrationProfile

然后:

user = models.ForeignKey(RegistrationProfile)

答案 1 :(得分:0)

迁移可以声明依赖项。通常情况下,makemigrations做得很好,但这次看起来好像错过了。我建议您找到它创建的迁移文件(在your_app/migrations中)并检查其dependencies。它应该是这样的:

class Migration(migrations.Migration):
    dependencies = [("registration", "0042_some_migration")]

    # operations...

这里的关键是dependencies数组应该引用注册应用程序和最新的迁移(或者至少是你所依赖的最新版本)。

然后manage.py makemigrations将检测依赖项并以正确的顺序运行迁移。