Управление сигналами буксировки в двух разных приложениях на Django

У меня есть два приложения Django, blogApp и accounts, когда я создал сигнальный файл для blogapp, который может slugify title после сохранения модели в базе данных, это работает отлично. Но когда я добавил второй сигнальный файл для аккаунтов, который может создавать профиль пользователю, когда он закончил регистрацию, он показывает мне эту ошибку: Post matching query does not exist., а когда я проверяю раздел администратора, я вижу, что профиль был успешно создан.

PostModel в приложении blogApp: PostModel in blogApp application

Сигналы в приложении blogApp: Signals in blogApp application

ProfileModel в приложении счетов: Profile Model in accounts app

Сигналы в приложении счетов: Signals in accounts app

Итак, как я могу создать профиль пользователя без индексации на сигналы Post. Потому что я думаю, что два сигнала двух приложений активируются после того, как пользователь нажимает кнопку register.

Моя ссылка на проект GitHub: GitHub project

Я думаю, что ваша проблема связана с отправителем, которого вы установили. Вы хотите произвести определенное действие над экземпляром поста, но в качестве отправителя задали User? Поэтому в вашей функции receive вы пытаетесь получить экземпляр сообщения с id пользователя, указанным в качестве isntance.

@receiver(post_save, sender=Post)
def slugify_title_model_field(sender, instance, created, **kwargs):
    if created:
        post_to_slugify = Post.objects.get(id=instance.id)
        post_to_slugify.title = slugify(post_to_slugify.title)
        post_to_slugify.slug = slugify(post_to_slugify.title)
        post_to_slugify.save()

Конечно, вы должны удалить запись post_save.connect... после этого кода.

Но для этого случая я советую вам перегрузить функцию сохранения вашей модели, она для этого и существует, и было бы гораздо логичнее поместить эту функцию в модель, потому что она напрямую касается сохраняемого экземпляра. Я вообще использую сигналы для работы со случаями, внешними по отношению к самой модели

Вернуться на верх