在 django 应用程序中集成 pinax-notifications 失败
Integrating pinax-notifications failed in django app
我正在使用 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.
然后我尝试将 INSTALLED_APPS
中的 pinax.notifications
更改为 pinax-notifications
。服务器给我这个错误: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"(如通知文档所建议的那样),我清楚地看到 both 套文档指定 pinax.<something>
。我无法解释...文档怎么会那个错了?两次?
(出于其他不相关的原因,我使用 Django 1.19 而不是 2.0,但我认为这不重要。)
无论如何 – "this worked." HTH.™
重要编辑:我随后发现两者 pinax
和 pinax.notifications
在 INSTALLED_APPS
中需要。如果没有后者,migrate
将不会 应用 所有迁移。
INSTALLED_APPS = [
...
'pinax',
'pinax.notifications',
...
]
我还打开了 (并已关闭) 在 GitHub 上的项目中针对此效果的故障单,因此请同时参考该站点.
我正在使用 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.
然后我尝试将 INSTALLED_APPS
中的 pinax.notifications
更改为 pinax-notifications
。服务器给我这个错误: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"(如通知文档所建议的那样),我清楚地看到 both 套文档指定 pinax.<something>
。我无法解释...文档怎么会那个错了?两次?
(出于其他不相关的原因,我使用 Django 1.19 而不是 2.0,但我认为这不重要。)
无论如何 – "this worked." HTH.™
重要编辑:我随后发现两者 pinax
和 pinax.notifications
在 INSTALLED_APPS
中需要。如果没有后者,migrate
将不会 应用 所有迁移。
INSTALLED_APPS = [
...
'pinax',
'pinax.notifications',
...
]
我还打开了 (并已关闭) 在 GitHub 上的项目中针对此效果的故障单,因此请同时参考该站点.