我正在使用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
如何使这项工作?
答案 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的项目中打开了(并已关闭)这个效果的故障单,所以请同时参考该网站。