2016-12-24 2 views
1

Je suis en train de travailler avec django-1.10 et j'aimerais mettre en place un comportement de notification pour mon application en utilisant pinax-notifications-4.0.L'intégration des notifications pinax a échoué dans l'application django

Je suis la quickstart pour inclure cela au INSTALLED_APP

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

alors et le guide usage.

premier est de créer le type de notification chaleur/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") 
    ) 

appellent le second gestionnaire pour créer des avis après l'application est migré. 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) 

comprennent enfin le appconfig au heat.__init__.py

default_app_config = 'heat.apps.HeatConfig' 

mais en essayant de courir ces:

python manage.py makemigrations pinax.notifications 

Je suis cette erreur: RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

Ensuite, j'essaie de changer le pinax.notifications en pinax-notifications dans le INSTALLED_APPS. Le serveur me cède cette erreur: ImportError: No module named pinax-notifications

Comment faire pour que cela fonctionne?

+0

Avez-vous 'django.contrib.sites' dans votre' INSTALLED_APPS'? –

+0

j'ai ajouté et je change le 'pinax.notifications' à' pinax' et maintenant son fonctionnement je ne sais pas pourquoi encore mais les documents indique clairement que 'pinax.notifications' –

+0

Vu aussi. –

Répondre

2

j'ai pu résoudre en changeant le fichier 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) 

à ce sujet.

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

Pour mémoire, j'ai aussi rencontré ce problème et trouvé, comme Roel Delos Reyes a fait précédemment, que la modification de l'application nom à pinax (au lieu de pinax.notifications que la documentation indique très clairement) semble avoir résolu le problème.

Lorsque j'ai effectué cette modification, makemigrations a trouvé toutes les migrations.

J'utilise en fait deux « pinax.notifications » et « pinax.templates » (comme la documentation pour les notifications) recommande, et je vois que les deux ensembles de documents précisent clairement pinax.<something>. Je ne peux pas l'expliquer ... comment la documentation pourrait-elle être que mal? Deux fois?

(j'utilise Django 1.19 au lieu de 2.0 pour d'autres raisons non liées, mais je ne pense pas que les questions.)

Quoiqu'il en soit - « cela a fonctionné. » HTH.™

Modifier Important: Je trouve par la suite que les deux pinaxetpinax.notifications sont nécessaires dans INSTALLED_APPS. Sans ce dernier, appliquerait toutes les migrations.

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

J'ai aussi ouvert (et ont depuis fermé) un trouble ticket à cet effet dans le projet sur GitHub, donc s'il vous plaît se référer à ce site, aussi bien.