模型创建调用其相关的模型保存方法?

时间:2018-06-19 09:57:09

标签: python django django-models django-related-manager

有这些模型定义和两者之间的关系:

class Car(models.Model):
    description = models.CharField(max_length=35)

    def save(self, **kwargs):
        invalidate_cache()
        super().save(**kwargs)

    def delete(self, **kwargs):
        invalidate_cache()
        return super().delete(**kwargs)


class Passenger(models.Model):
    car = models.ForeignKey(Car, related_name='passengers')

我已经在Car模型上定义了自定义savedelete,因为当修改汽车实例时,我必须执行一些额外的操作,特别是我需要使缓存无效。

我的疑问是:创建/更新/删除相关模型会调用这些自定义方法吗?

我会试着更清楚:

c1 = Car(description='super fast car')
p = Passenger(car=c1)

显然,c1的创建会调用Car.save,但 Passenger 的实例p的创建是否会调用Car.save

从我的测试看起来似乎是这样,但我想更确定它不仅仅是一个特定的情况,这种情况一直发生在Django模型处理周期中(我找不到具体的文档)。

0 个答案:

没有答案