我创建基本模型并继承所有模型。这是我的BaseModel
:
class BaseModel(models.Model):
create_date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now=True)
created_by = models.ForeignKey('UserManager.User', default=1, on_delete=models.SET_DEFAULT,related_name='created_%(class)ss')
updated_by = models.ForeignKey('UserManager.User', default=1, on_delete=models.SET_DEFAULT,related_name='updated_%(class)ss')
class Meta:
abstract = True
ordering = ['create_date']
def save(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
if self.user:
if self.user.pk is None:
self.created_by = self.user
self.updated_by = self.user
super(BaseModel, self).save(*args, **kwargs)
现在,我想向像这样的子模型之一的save
方法添加一些操作:
class Child(BaseModel):
# Some fields go here.
def save(self, *args, **kwargs):
# Some operations must run here.
但是子模型的save
方法不再运行!
如何将子模型的保存方法与abastract=True
模型的保存方法一起使用?
答案 0 :(得分:1)
如果您从BaseModel继承ChildModel,则当您进入BaseModel'self。 class '中的save方法时,仍然是ChildModel。因此,它将找到Child的超级对象,即BaseModel,因此在BaseModel中调用保存。
所以只需致电,
Assembly.Load("System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");