Чтобы повесить сигнал post_save на родительский не абстрактный класс в Django и отлавливать сигнал создания объектов дочерних моделей, вам необходимо выполнить несколько шагов.
1. Импортируйте необходимые модули:
from django.db.models.signals import post_save from django.dispatch import receiver
2. Создайте функцию-обработчик для сигнала, в которой будет выполняться нужная вам логика:
@receiver(post_save, parent_model) def my_post_save_handler(sender, instance, created, **kwargs): # Ваша логика обработки сигнала
Замените parent_model
и my_post_save_handler
соответственно на родительскую модель, на которую вы хотите повесить сигнал, и название вашей функции-обработчика.
3. Зарегистрируйте функцию-обработчик внутри метода ready()
вашего приложения, чтобы сигнал был привязан к правильной модели:
from django.apps import AppConfig class YourAppConfig(AppConfig): name = 'your_app_name' def ready(self): from .models import ParentModel # Импортируйте родительскую модель from .signals import my_post_save_handler # Импортируйте функцию-обработчик post_save.connect(my_post_save_handler, sender=ParentModel)
Замените your_app_name
на имя вашего приложения, а ParentModel
на родительскую модель.
4. Создайте файл signals.py
в вашем приложении и импортируйте его в YourAppConfig
. Внутри этого файла разместите вашу функцию-обработчик и выполните необходимые импорты.
Теперь каждый раз, когда будет создан объект дочерней модели, сигнал post_save будет отлавливаться вашим обработчиком my_post_save_handler
.