我正在从没有问题的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']
答案 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