为了账号安全,请及时绑定邮箱和手机立即绑定

在Django中添加对父模型抽象保存方法保存方法的操作

在Django中添加对父模型抽象保存方法保存方法的操作

繁华开满天机 2023-02-07 14:20:11
我创建基础模型并在我的所有模型中继承它。这是我的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. 但是savechild model的method已经跑不起来了!如何将子模型的保存方法与abastract=True模型的保存方法一起使用?
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

如果你从BaseModel继承ChildModel,当你到达BaseModel'self.save方法时。' 仍然是 ChildModel。所以它找到了Child的super,也就是BaseModel,所以调用了BaseModel中的save。

所以只要打电话,

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


查看完整回答
反对 回复 2023-02-07
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信