2016-12-24 3 views
1

Im работает с django-1.10 и хотел бы реализовать некоторые действия по уведомлению для моего приложения, используя pinax-notifications-4.0.Не удалось выполнить интеграцию с pinax-уведомлениями в приложении django

Я следую quickstart для включения этого в INSTALLED_APP

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

затем и usage руководства.

Во-первых, чтобы создать тип уведомления в тепла/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

У вас есть 'django.contrib.sites' в вашем' INSTALLED_APPS'? –

+0

Я добавил, и я меняю 'pinax.notifications' на' pinax', и теперь его работа я не знаю, почему пока, но в документах четко указано, что '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) 
0

Для записи, я также столкнулся с этой проблемой и нашел, как ранее делали Рул Делос Рейес, что изменение имя-приложения для pinax (вместо pinax.notifications как документация очень-ясно говорится), кажется, решена проблема.

Когда я сделал это изменение, makemigrations нашел все миграции.

Я на самом деле, используя оба «pinax.notifications» и «pinax.templates» (как документация для уведомлений рекомендует), и я вижу, что как наборы документации четко указать pinax.<something>. Я не могу это объяснить ... как может быть документация , что неправильно? Дважды?

(я использую Django 1.19 вместо 2.0 для других причин, не связанных, но я не думаю, что имеет значение.)

Так или иначе - «это работает». НТН.™

Важно Edit: впоследствии я обнаружил, что какpinaxиpinax.notifications необходимы INSTALLED_APPS. Без последнего migrate не будет применить все миграции.

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

Я также открыл (и с тех пор закрыты) бесперебойный билет на этот счет в проекте на GitHub, поэтому, пожалуйста, обратитесь к этому сайту, а также.

Смежные вопросы