2012-09-28 2 views
0

또는 Django의 오래된 이중 가져 오기 문제와 models.py의 signals.py를 포함시킬 때 신호가 생깁니다.django - 신호에 주석을 사용하려면 어떻게해야합니까?

"한 번만 실행"코드를 신호,하지만 만약 내가 한다면 절대적으로해야합니다. 그것은 단지 어리석은 해킹처럼 보인다. 어쨌든

,

나는 signals.py 파일이 및 신호 중 하나가 내가 그것에 대한 주석을 만들려면 어떻게해야합니까, models.py에 정의 된 개체 중 하나입니다 주어진?

내가 모델을 포함한다면 나는 파이썬이 혼란스럽지 않게 여전히 "순환 참조"문제를 일으킨다. 그래도 2012 년입니다.

나는 get_model를 사용하여 실험, 그러나 그것은 models.py 파일에 에 대한어떤 절약 모든 모든 모델을 ... 신호가 이제 호출을 작동하지 않습니다. 여기

은 주석이며, 무엇을 지금처럼 보인다 :

@receiver(pre_save, sender=get_model('myapp.models','Story')) 

내가 또한 위의 해당 from myapp.models import Story

@receiver(pre_save, sender=Story) 

을 시도하지만, 가져 오기 오류가 설명 일으켰습니다.

어떻게해야합니까?

답변

1

이렇게 붙어있을 때 나는 발신자를 지정하지 않고 수신자를 등록하고 모델 가져 오기를 기능 본문 내에서 수행합니다.

@receiver(pre_save) 
def handler(sender, instance, created, **kwargs): 
    from models import MyModel 
    if not isinstance(sender, MyModel): 
     return 
    do_stuff() 
+0

정말 아름답습니다. – bharal

관련 문제