2013-02-07 2 views
4

Django에서 다중 테이블 상속을 사용하는 모델이 있고 상위 클래스의 post_save 신호에 대한 수신기를 정의하면 해당 수신기 함수가 호출됩니다. 하위 클래스의 인스턴스가 저장됩니까? 내가 할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) 

을 경우 :

>>> dog = Dog.objects.get(...) 
>>> dog.category = "canine" 
>>> dog.save() 

echo_category 수신기 기능이

를 호출 할 것이다

from another question을 빌려?

답변

0

아니요, 호출되지 않습니다. Django trac의 #9318을 참조하십시오.

10
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) 

좋은 하루 되세요!

+1

모든 하위 클래스가 이미 등록되도록 해당 스 니펫을 안전하게 배치 할 수있는 위치는 어디입니까? –

+0

@ScottStafford [앱 준비 방법] (https://docs.djangoproject.com/en/1.11/ref/applications/#django.apps.AppConfig.ready) –