2016-07-17 2 views
1

Pour garder les signaux organisés:Dans Django, comment puis-je empêcher l'importation de mes signaux dans AppConfig.ready() plus d'une fois?

__init__.py

default_app_config = 'posts.apps.PostsConfig' 

apps.py

from django.apps import AppConfig 


class PostsConfig(AppConfig): 
    name = 'posts' 

    def ready(self): 
     import posts.signals 

Comment puis-je assurer que ready() ou import posts.signals exécute une seule fois?

+1

double possible de [Effectuer des opérations de modèle (une seule fois) à init serveur] (http://stackoverflow.com/questions/38341793/perform-model-operations-only-once-at-server-init) – solarissmoke

+0

Quels problèmes rencontrez-vous lorsque 'ready()' s'exécute deux fois? L'importation des signaux deux fois ne devrait pas causer de problèmes. – knbk

+0

@solarissmoke votre edit à la réponse sur il y a ce que je cherche, merci. Le contexte de la question est différent - c'est une demande d'aide pour corriger une erreur, c'est une question de meilleure pratique basée sur les docs. Je ne sais pas si c'est fermé, mais je n'ai pas trouvé votre réponse sur cette autre question avant de poster ceci. – StringsOnFire

Répondre

0
from django.apps import AppConfig 


class PostsConfig(AppConfig): 
    name = 'posts' 
    ready_has_run = False 

    def ready(self): 
     if self.ready_has_run: 
      return 
     import posts.signals 
     self.ready_has_run = True