在django app

时间:2016-12-24 07:45:05

标签: python django notifications pinax

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

我正在关注quickstart,将其包含在INSTALLED_APP

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

然后和usage指南。

首先在 heat / handler.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)

最后将appconfig包含在 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-notifications中的INSTALLED_APPS。服务器产生了这个错误:ImportError: No module named pinax-notifications

如何使这项工作?

2 个答案:

答案 0 :(得分:2)

我能够通过更改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)

答案 1 :(得分:0)

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

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

我实际上同时使用“pinax.notifications”和“pinax.templates”(作为通知建议的文档),我看到两个文档集明确指出{{1} }。我无法解释它......文档如何 错误?两次?

(由于其他无关的原因,我使用的是Django 1.19而不是2.0,但我认为不重要。)

无论如何 - “这很有效。” HTH。™

重要编辑:我后来发现{{1}需要 pinax.<something> pinax }。如果没有后者,pinax.notifications将不会应用所有迁移。

INSTALLED_APPS

我还在GitHub的项目中打开了(并已关闭)这个效果的故障单,所以请同时参考该网站。