模型与(META)继承冲突

时间:2019-04-12 09:37:04

标签: python django django-models

在django项目中,我有多个应用程序,并且公用程序包含以下模型:

class CLDate(models.Model):
    class Meta:
        abstract = True

    active = models.BooleanField(default=True)
    last_modified = models.DateTimeField(auto_now=True)
    created = models.DateTimeField(auto_now_add=True)

class Switch(CLDate):
    name = models.CharField(max_length=64)
    code = models.CharField(max_length=64, blank=True, null=True)
    description = models.TextField(blank=True, null=True)
    sorted = models.IntegerField(default=0)

class Currency(Switch):
    pass

在另一个应用程序中,我导入了Switch,并尝试将ForeignKey添加到也继承自Switch的模型中

class Country(Switch):
    ...
    currency = models.ForeignKey(Currency, on_delete=models.CASCADE)
    ...

运行makemigration或任何带有manage.py的内容时,出现以下错误:

SystemCheckError: System check identified some issues:

ERRORS:
ads.Country.currency: (models.E006) The field 'currency' clashes with the 
field 'currency' from model 'common.switch'.

为什么会出现此错误,我该如何解决?我的意思是,在数据库级别,它应该只是货币模型/对象的“指针”,并且与它的类型无关。当然,如果我将“货币”的继承类型更改为其他类型,则效果很好。

Django:2.2 python:3.5.3

0 个答案:

没有答案