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。
我发现了问题所在。我以前的类Timestampable不是继承自models.Model. 因此,在我最初的迁移之一中,我有这样的行:
bases=(at_common.behaviours.Timestampable, models.Model),
Run Code Online (Sandbox Code Playgroud)
我一直在寻找一种方法来删除它。结果我只需要从初始迁移文件中删除这一行。
| 归档时间: |
|
| 查看次数: |
8231 次 |
| 最近记录: |