Profile、Certifier、および Designer といういくつかの単純なモデルがあり、後者の 2 つは 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)
Django 1.8 ではこれは完全に機能しますが、1.9 では次のようになります。
django.core.management.base.SystemCheckError: SystemCheckError: システム チェックでいくつかの問題が特定されました:
エラー:
check.Designer.certifier: (models.E006) フィールド 'certifier' は、モデル 'check.profile' のフィールド 'certifier' と衝突します。
(この場合、Profile.type は関係ありません。ログインしているユーザー プロファイルの種類を区別するために必要なだけです)。
check.profile には明らかにフィールド「認証者」がありません。これはバグですか、それとも何か見逃していますか? 別のプロジェクトでも同じことが起こります。