具有多表继承的父类的Django post_save信号

Lor*_*ein 5 django django-models multi-table-inheritance

在Django中,如果您有使用多表继承的模型,并且您在父类上为post_save信号定义了一个接收器,那么在保存子类的实例时是否会调用该接收函数?

借用另一个问题的例子:

class Animal(models.Model):
    category = models.CharField(max_length=20)

class Dog(Animal):
    color = models.CharField(max_length=10)

def echo_category(sender, **kwargs):
    print "category: '%s'" % kwargs['instance'].category

post_save.connect(echo_category, sender=Animal)
Run Code Online (Sandbox Code Playgroud)

如果我做:

>>> dog = Dog.objects.get(...)
>>> dog.category = "canine"
>>> dog.save()
Run Code Online (Sandbox Code Playgroud)

echo_category接收函数被调用?

scy*_*gon 14

post_save.connect(my_handler, ParentClass)
# connect all subclasses of base content item too
for subclass in ParentClass.__subclasses__():
    post_save.connect(my_handler, subclass)
Run Code Online (Sandbox Code Playgroud)

祝你今天愉快!

  • 您可以在哪里安全地放置该代码段,以便所有子类都已注册? (2认同)

bfs*_*ott 3

查看:https: //code.djangoproject.com/ticket/9318 似乎大多数将信号传播到子类中的超级。