Управление сигналами буксировки в двух разных приложениях на Django
У меня есть два приложения Django, blogApp и accounts, когда я создал сигнальный файл для blogapp, который может slugify title после сохранения модели в базе данных, это работает отлично.
Но когда я добавил второй сигнальный файл для аккаунтов, который может создавать профиль пользователю, когда он закончил регистрацию, он показывает мне эту ошибку:
, а когда я проверяю раздел администратора, я вижу, что профиль был успешно создан.
PostModel в приложении blogApp:
ProfileModel в приложении счетов:
Итак, как я могу создать профиль пользователя без индексации на сигналы 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...
после этого кода.
Но для этого случая я советую вам перегрузить функцию сохранения вашей модели, она для этого и существует, и было бы гораздо логичнее поместить эту функцию в модель, потому что она напрямую касается сохраняемого экземпляра. Я вообще использую сигналы для работы со случаями, внешними по отношению к самой модели