我正在创建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)
答案 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
仅仅使用这个,将解决上述问题