升级到django 1.4时,我得到';X';与型号';Y';,尚未安装或是抽象的

升级到django 1.4时,我得到';X';与型号';Y';,尚未安装或是抽象的,django,django-models,Django,Django Models,我正在从django 1.3.1升级到1.4,它没有任何问题 我收到以下错误消息: exome_project.phen_form_choice:'term'与尚未安装或抽象的模型“class'exome_project.models.term'”有关系 奇怪的是,所谓抽象或缺失的术语类是 在同一个python文件的正上方定义: class Term(models.Model): id = models.IntegerField(primary_key=True) name =

我正在从django 1.3.1升级到1.4,它没有任何问题

我收到以下错误消息:

exome_project.phen_form_choice:'term'与尚未安装或抽象的模型“class'exome_project.models.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']
我认为(不确定)这可能是因为Term类中的
app\u label
属性。 如果两个类都在同一models.py文件中(看起来是),您可以尝试删除
app\u标签='HPO Views'
行。或者,如果两个文件都不在models.py中,则将此行添加到另一个类中

然后使用syncdb命令。如果它仍然不起作用,并且您有一个开发环境,请尝试删除de数据库,然后使用syncdb重建它


关于应用程序标签:

只是想了解一些事情:为什么有时候FK是一个类名(例如
Term
),但有时候它是一个字符串(例如
'phen\u form\u category'
)?不知道,我还没有写代码。。。