Django Migration:在抽象继承之后阻止创建基本模型

时间:2017-07-11 18:57:54

标签: python django django-1.8 python-3.2

我正在创建BaseModel并在Channel中继承。BaseModel执行save()时会有更多逻辑。在完成迁移并生成表时,我遇到了一个问题。

我的api_channel表创建时basemodel_ptr_id引用BaseModel表格。

但是,我要找的是将BaseModel中的所有字段都继承到Channel模型中。我的数据库中也不需要basemodel表。

我已通过官方Django Doc

请帮忙。

BaseModel.py

from django.db import models
from django.utils import timezone


class BaseModel(models.Model):
    created_on = models.DateTimeField(editable=False)
    updated_on = models.DateTimeField()

    # # To make the BaseModel abstract
    class Meta:
        abstract = True

    def __init__(self, *args, **kwargs):
        self._meta.db_table = self.__class_.__name__.lower()
        super(BaseModel, self).__init__(*args, **kwargs)

    def save(self, *args, **kwargs):
        ''' On save, update_at timestamp '''
        if not self.id:
            self.created_on = timezone.now()
        self.updated_on  = timezone.now()
        return super(User, self).save(*args, **kwargs)

Channel.py

from django.db import models
from api.models import base


class Channel(base.BaseModel):
    name = models.CharField(max_length=50)
    description = models.CharField(max_length=1000)

1 个答案:

答案 0 :(得分:1)

class BaseModel(models.Model):
    created_on = models.DateTimeField(editable=False)
    updated_on = models.DateTimeField()

    # # To make the BaseModel abstract
    class Meta:
        abstract = True

仅仅使用这个,将解决上述问题