Ошибка уведомления django: запрос соответствия NoticeType не существует?

Я пытаюсь отправить электронное письмо, используя django-уведомление. Я проследил за документацией и создал все типы уведомлений, шаблоны и management.py. Однако, когда я пытаюсь отправить электронное письмо, мне показывают эту страницу отладки с ошибкой: Соответствующий запрос NoticeType не существует. Вот часть кода.

В моем файле management.py:

from django.conf import settings
from django.db.models import signals
from django.utils.translation import ugettext_noop as _

if "notification" in settings.INSTALLED_APPS:
    from notification import models as notification

    def create_notice_types(app, created_models, verbosity, **kwargs):
        notification.NoticeType.create("create_model", _("Model Creation"), _("An entry has been created"))
        notification.NoticeType.create("delete_model", _("Model Deletion"), _("An entry has been deleted"))
        notification.NoticeType.create("edit_model", _("Model Change"), _("An entry has been changed."))
    signals.post_syncdb.connect(create_notice_types, sender=notification)
else:
    print "Skipping creation of NoticeTypes as notification app not found"

В моем файле settings.py:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'departments',
    'notification'
)

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'texturamail@gmail.com'
EMAIL_HOST_PASSWORD = #not shown
EMAIL_PORT = 587
NOTIFICATION_BACKENDS = [("texturamail@gmail.com", "notification.backends.email.EmailBackend"),]
#other code....

В моем файле models.py:

def model_create_edit(sender, **kwargs):
      instance = kwargs.get('instance')
      user, first_name, last_name = instance.user, instance.user.first_name, instance.user.last_name
      if kwargs['created']:
            notification.send([user], "create_email", {'user':user, 'first':first_name, 'last':last_name})

      else:
            notification.send([user], "edit_email", {'user':user, 'first':first_name, last':last_name})           

def model_deletion(sender, **kwargs):
      instance = kwargs.get('instance')
      user, first_name, last_name = instance.user, instance.user.first_name, instance.user.last_name
      notification.send([user], "delete_email", {'user':user, 'first':first_name, 'last':last_name})

Извините за перегрузку страницы кодом. Тем не менее, я что-то не так делаю? Что-нибудь пропало? Любое понимание будет с благодарностью!

2 ответа

Это происходит потому, что вы пытаетесь присвоить то, что не существует, NoticeType объект. Дело в том, что я не совсем понимаю, какая часть кода это делает, но добавляю try:, except: решит проблему. Попробуйте каждый раз, когда вы соответствуете запросам, чтобы добавить его, и вы найдете его.

Это происходит потому, что вы создали NoticeType с этикеткой create_model, delete_model, edit_model, но когда вы отправляете уведомления, используя notifications.send Вы используете другой ярлык: create_email и т. д. ярлыки должны быть такими же, какие вы создали в первую очередь ты должен измениться create_mail в create_modelnotification.send([user], "create_model", {'user':user, 'first':first_name, 'last':last_name}),

Другие вопросы по тегам