升级到django 1.4时我会得到X' X'与模型' Y'有关系,它没有安装或是抽象的

时间:2014-06-11 18:37:27

标签: django django-models

我正在从没有问题的django 1.3.1升级,将升级改为1.4

我收到此错误消息:

exome_project.phen_form_choice:'term'与模型“class'exome_project.models.Term'”有关系,它没有安装或是抽象的。

奇怪的是,被认为是抽象或缺失的Term类是 在同一个python文件中正上方定义:

class Term(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=600)
    is_obsolete = models.IntegerField()
    is_root = models.IntegerField()
    subontology = models.CharField(max_length=3)
    comment = models.TextField(blank=True)
    acc = models.CharField(max_length=30)
    def __unicode__(self):
        return u'%s, Sub: %s' % (self.name, self.subontology)
    class Meta:
        db_table = u'v_term'
        ordering = ['name','id']
        app_label = 'HPO Views'

class phen_form_choice(models.Model):
    term =  models.OneToOneField(Term, primary_key=True)
    phen_form_cat = models.ForeignKey('phen_form_category')
    display_order = models.IntegerField()
    def __unicode__(self):
        #return u'Term Id: %s, Term Name: %s, Display Order: %s' % (self.term.name, self.phen_form_cat, self.display_order)
        return self.term.name
    class Meta:
        ordering = ['phen_form_cat','display_order']

1 个答案:

答案 0 :(得分:0)

我认为(不确定)可能是因为Term类中的app_label属性。 如果两个类都在相同的models.py文件中(似乎是),则可以尝试删除app_label = 'HPO Views'行。或者,如果两个文件都不在models.py中,请将此行添加到另一个类中。

然后使用syncdb命令。如果它仍然不起作用并且你有一个dev环境,请尝试删除de database然后使用syncdb重建它。

关于app-label:https://docs.djangoproject.com/en/dev/ref/models/options/#app-label