在 django 应用程序中集成 pinax 通知失败



我正在使用django-1.10,并希望使用pinax-notifications-4.0为我的应用程序实现一些通知行为。

我正在按照快速入门将其包含在INSTALLED_APP

INSTALLED_APPS = [
# ...
"pinax.notifications",
# ...
]

然后和使用指南。

首先是在加热/处理程序中创建通知类型.py

from pinax.notifications.models import NoticeType
from django.conf import settings
from django.utils.translation import ugettext_noop as _
def create_notice_types(sender, **kwargs): 
NoticeType.create(
"heat_detection", 
_("Heat Detected"), 
_("you have detected a heat record")
)

其次,调用处理程序以在迁移应用程序后创建通知。heat.apps.py

from .handlers import create_notice_types
from django.apps import AppConfig
from django.db.models.signals import post_migrate
class HeatConfig(AppConfig):
name = 'heat'
def ready(self):
post_migrate.connect(create_notice_types, sender=self)

最后将应用程序配置包含在heat.__init__.py

default_app_config = 'heat.apps.HeatConfig'

但是当尝试运行这些时:

python manage.py makemigrations pinax.notifications

我收到此错误:RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

然后我尝试将pinax.notifications更改为pinax-notificationsINSTALLED_APPS.服务器给我这个错误:ImportError: No module named pinax-notifications

如何做到这一点?

我能够通过更改 heat.apps.py 文件来解决它

from django.apps import AppConfig
from django.db.models.signals import post_migrate
from .handlers import create_notice_types
class HeatConfig(AppConfig):
name = 'heat'
def ready(self):        
post_migrate.connect(create_notice_types, sender=self)

对此。

from django.apps import AppConfig
class HeatConfig(AppConfig):
name = 'heat'
def ready(self):
from django.db.models.signals import post_migrate
from .handlers import create_notice_types
post_migrate.connect(create_notice_types, sender=self)

作为记录,我也遇到了这个问题,并发现,就像Roel Delos Reyes之前所做的那样,将应用程序名称更改为pinax(而不是文档非常清楚地说明的pinax.notifications)似乎已经解决了这个问题。

当我进行此更改时,makemigrations找到了所有迁移。

我实际上同时使用"pinax.notifications"和"pinax.templates"(如通知文档所建议的那样),我看到这两组文档清楚地指定了pinax.<something>。我无法解释...文档怎么会那么错误? 两次?

(出于其他不相关的原因,我使用 Django 1.19 而不是 2.0,但我认为这并不重要。

无论如何——"这奏效了。 呵呵。 ™

重要编辑:我随后发现INSTALLED_APPS需要pinaxpinax.notifications。 如果没有后者,migrate将无法应用所有迁移。

INSTALLED_APPS = [
...
'pinax',
'pinax.notifications', 
...
]

我还在 GitHub 上的项目中打开了(并且已经关闭了)这方面的麻烦单,所以也请参考该站点。

相关内容

  • 没有找到相关文章

最新更新