【问题标题】:Django model foreign key not installed or abstract未安装或抽象 Django 模型外键
【发布时间】:2016-06-24 00:40:31
【问题描述】:

我在 django 中创建了 2 个模型,第一个将 django auth 用户作为外键,第二个将第一个模型作为外键,就像在 models.py 中这样:

class SGIUsers(models.Model):
    charge = models.CharField('Cargo', max_length=80)
    user = models.ForeignKey(User, unique=True)



class ResponsibleStateFlow(ModelBase):
    user = models.ForeignKey(SGIUsers, verbose_name = 'Responsable', blank = False )
    process= models.ForeignKey(Process, verbose_name='Proceso')

但我收到此错误:

sgiprocess.ResponsibleStateFlow.user: (fields.E300) Field defines a relation with model 'SGIUsers', which is either not installed, or is abstract.

我当然已经导入了 django auth 用户。有什么想法吗??

【问题讨论】:

  • 您检查过您的INSTALLED_APPS 设置吗?
  • 是的,当然,一切都井井有条。

标签: django django-models


【解决方案1】:

找到了,我需要先在类 meta 中为 SGIUser 定义一个带有应用名称的应用标签,如下所示:

class Meta:
        app_label = 'app_name'

然后用 'app_name.Modelname' 调用外文

【讨论】:

    【解决方案2】:

    尝试添加应用名称:

    field=models.ForeignKey('app_name.ModelName')
    

    【讨论】:

    • 不工作 =(,说应用程序没有定义但实际上是,如果我删除责任状态流模型一切正常。
    • ModelBase 类在做什么
    • 它只是添加了诸如 created_date、deleted 之类的字段......没有别的。我也尝试使用 models.Model 而不是 ModelBase 但结果相同
    • 你能把你的用户类的代码也发布在 SGIUsers 上吗?
    • 使用它的 User 类是 django 默认模型,包含在 admin 中,我只是将其称为外键
    猜你喜欢
    • 2014-01-29
    • 2011-11-23
    • 2016-04-19
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2011-06-02
    相关资源
    最近更新 更多