“Attachment”类中的本地字段“created_at”与基类“Timestampable”中名称相似的字段冲突

phy*_*ion 8 django database-migration

我有以下两个模型:

class Timestampable(models.Model):
    created_at = models.DateTimeField(null=True, default=None)
    updated_at = models.DateTimeField(null=True, default=None)

    class Meta:
        abstract = True

    def save(self, *args, **kwargs):
        now = timezone.now()
        if not self.created_at:
            self.created_at = now
        self.updated_at = now

        super(Timestampable, self).save(*args, **kwargs)

class Attachment(Timestampable, models.Model):
    uuid = models.CharField(max_length=64, unique=True)
    customer = models.CharField(max_length=64)
    user = models.CharField(max_length=64)
    file = models.FileField(upload_to=upload_to)
    filename = models.CharField(max_length=255)
    mime = models.CharField(max_length=255)
    publicly_accessible = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)

当我尝试迁移这些模型时,出现以下错误:

django.core.exceptions.FieldError: Local field 'created_at' in class 'Attachment' clashes with field of similar name from base class 'Timestampable'
Run Code Online (Sandbox Code Playgroud)

我在这里这里这里读到,当基类是抽象的时,这应该起作用。但是,我将其标记为抽象,但它似乎仍然不起作用。还有什么可能是错误的?我正在使用 Django 1.8.14。

phy*_*ion 5

我发现了问题所在。我以前的类Timestampable不是继承自models.Model. 因此,在我最初的迁移之一中,我有这样的行:

bases=(at_common.behaviours.Timestampable, models.Model),
Run Code Online (Sandbox Code Playgroud)

我一直在寻找一种方法来删除它。结果我只需要从初始迁移文件中删除这一行。