小编Jen*_*ber的帖子

Django 1.9:Field与父模型中不存在的字段的字段冲突

我有一些简单的模型,Profile,Certifier和Designer,后者继承自Profile(多表继承).在Designer中,有一个Certifier的外键.

class Profile(models.Model):
    TYPES = (
        ('admin', _('Administrator')),
        ('certifier', _('Certifier')),
        ('designer', _('Designer'))
    )

    user = models.OneToOneField(User)
    type = models.CharField(max_length=9, choices=TYPES)

    def __str__(self):
        return self.user.username + ' (' + self.type + ')'

class Admin(Profile):
    pass
class Certifier(Profile):
    pass
class Designer(Profile):
    certifier = models.ForeignKey(Certifier)
Run Code Online (Sandbox Code Playgroud)

在Django 1.8中,这很有效,但在1.9中我得到了;

django.core.management.base.SystemCheckError:SystemCheckError:系统检查发现了一些问题:

错误:

check.Designer.certifier :( models.E006)字段'certifier'与模型'check.profile'中的字段'certifier'冲突.

(在这种情况下,Profile.type是无关紧要的,我只需要它来区分登录的用户配置文件类型).

check.profile显然没有字段'certifier'.这是一个错误还是我错过了什么?同样的事情发生在另一个项目中.

django name-clash multi-table-inheritance django-1.9

23
推荐指数
2
解决办法
7686
查看次数