来自现有 table 的 Django 模型外键
Django model foreign key from existing table
在我的 django 项目中,我使用 django-registration 可重用应用程序。我安装了这个应用程序和 运行 syncdb。它是在我的数据库中为我 table '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.
我该如何解决这个问题?
试试这个:
from registration.models import RegistrationProfile
然后:
user = models.ForeignKey(RegistrationProfile)
迁移可以声明依赖项。通常,makemigrations 在这方面做得很好,但这次似乎错过了。我建议您找到它创建的迁移文件(在 your_app/migrations
中)并检查它的 dependencies
。它应该是这样的:
class Migration(migrations.Migration):
dependencies = [("registration", "0042_some_migration")]
# operations...
此处的关键是 dependencies
数组应引用注册应用程序和最新迁移(或至少是您所依赖的最新迁移)。
然后 manage.py makemigrations
将以正确的顺序检测依赖项和 运行 迁移。
在我的 django 项目中,我使用 django-registration 可重用应用程序。我安装了这个应用程序和 运行 syncdb。它是在我的数据库中为我 table '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.
我该如何解决这个问题?
试试这个:
from registration.models import RegistrationProfile
然后:
user = models.ForeignKey(RegistrationProfile)
迁移可以声明依赖项。通常,makemigrations 在这方面做得很好,但这次似乎错过了。我建议您找到它创建的迁移文件(在 your_app/migrations
中)并检查它的 dependencies
。它应该是这样的:
class Migration(migrations.Migration):
dependencies = [("registration", "0042_some_migration")]
# operations...
此处的关键是 dependencies
数组应引用注册应用程序和最新迁移(或至少是您所依赖的最新迁移)。
然后 manage.py makemigrations
将以正确的顺序检测依赖项和 运行 迁移。