具有这些模型定义以及两者之间的关系:
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 模型上定义了 customsave
和delete
,因为当汽车实例被修改时,我必须执行一些额外的操作,特别是我需要使缓存无效。
我的疑问是:创建/更新/删除相关模型会调用这些自定义方法吗?
我会尽量说清楚:
c1 = Car(description='super fast car')
p = Passenger(car=c1)
显然是c1
调用的创建,但是乘客Car.save
实例的创建会p
调用还是不调用?Car.save
从我的测试来看似乎是这样,但我想更确定这不仅仅是一个特定的案例,而且在 Django 模型处理周期中一直发生这种情况(我找不到关于此的特定文档)。