【发布时间】:2018-05-23 16:37:36
【问题描述】:
我的代码如下图:
class X(models.Model):
class Meta:
db_table = 'X'
ph_no = models.CharField(max_length =255,null=False)
y = models.ForeignKey('y',on_delete=models.CASCADE)
class M(models.Model):
class Meta:
db_table = 'M'
comment = models.CharField(max_length=255,null= False)
x = models.ForeignKey('X',on_delete=models.CASCADE)
class y (models.Model):
class Meta:
db_table = 'y'
details = models.TextField(null= False)
现在,当我使用此架构运行迁移时,我收到以下错误
appName.M.x: (fields.E300) Field defines a relation with model 'X', which is either not installed, or is abstract.
appName.M.x: (fields.E307) The field appName.M.x was declared with a lazy reference to 'appName.X', but app 'appName' doesn't provide model 'X'.
我的settings.py文件如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'dashboard'
]
【问题讨论】:
-
你确定你的
ForeignKey中没有写小写'x'吗?名称区分大小写。 -
是的,我在代码中写了大写的'X'
-
如果您使用
X而不是'X'并执行导入会怎样?您是否注册了X在settings.py中定义的应用程序? -
我同意这一点。错误清楚地表明
'appName' doesn't provide model 'X' -
你能分享一下你的模型声明
'y'吗?
标签: django django-models django-rest-framework