【发布时间】:2010-12-08 19:19:04
【问题描述】:
我有一个 myapp/management/__init__.py 正在注册一个 post_syncdb 处理程序,如下所示:
from django.db.models import signals
from features import models as features
def create_features(app, created_models, verbosity, **kwargs):
print "Creating features!"
# Do stuff...
signals.post_syncdb.connect(create_features, sender=features)
我已验证以下内容:
-
features和myapp都在settings.INSTALLED_APPS -
myapp.management在 syncdb 运行之前被加载(通过模块级别的打印语句验证) -
features应用程序正在由syncdb处理,它正在发出post_syncdb信号(通过使用--verbosity=2检查syncdb的输出来验证。 - 我正在对另一对应用程序使用完全相同的习语,并且正确调用了该处理程序。我比较了这两个模块,发现调用之间没有相关差异。
但是,myapp.management.create_features 永远不会被调用。我错过了什么?
【问题讨论】:
-
这个问题来自 2010 年。有关 2016 年有效的解决方案,请参见此处:stackoverflow.com/a/32446857/633961
标签: python django signals django-syncdb