Sergiy_Hanzhela
@Sergiy_Hanzhela
Начинающий разработчик!

Как избежать дублирование сигнало django при наследование модели?

Есть модель для новости на сайте BlogPost.
class BlogPost(Displayable, Ownable, RichText, AdminThumbMixin):

    categories = models.ManyToManyField("BlogCategory",
                                        verbose_name=_("Categories"),
                                        blank=True, related_name="blogposts")
    allow_comments = models.BooleanField(verbose_name=_("Allow comments"),
                                         default=True)
    post_qualification = models.BooleanField(verbose_name=_("Post qualification"),
                                         default=False)
    comments = CommentsField(verbose_name=_("Comments"))
    rating = RatingField(verbose_name=_("Rating"))
    featured_image = models.ImageField(verbose_name=_("Featured Image"), blank=True, null=True,
                                       upload_to=upload_to("blog.BlogPost.featured_image", "blog"),
                                       max_length=255)
    video = EmbedVideoField(blank=True, null=True, verbose_name=u'Video')
    related_posts = models.ManyToManyField("self",
                                           verbose_name=_("Related posts"), blank=True)

    admin_thumb_field = "featured_image"

    class Meta:
        verbose_name = _("Blog post")
        verbose_name_plural = _("Blog posts")
        ordering = ("-publish_date",)


хотел с помощью сигналов отправить сообщение в бот.
@receiver(signals.post_save, sender=BlogPost, dispatch_uid='mezzanine.blog.models')
def save_blog_post(sender, **kwargs):
    print(f"Sender -- {sender}")

Пои сохранение модели обработчик срабатывает 5 раз
Sender -- <class 'mezzanine.blog.models.BlogPost'>
Sender -- <class 'mezzanine.blog.models.BlogPost'>
Sender -- <class 'mezzanine.blog.models.BlogPost'>
Sender -- <class 'mezzanine.blog.models.BlogPost'>
Sender -- <class 'mezzanine.blog.models.BlogPost'>

Я так понимаю это из-за наследования в модели, срабатывает метод save() в других моделях, тому как про бывал через метод save этой модели в бот отправлялось те же 5 сообщений.
Каким образом избежать этого?
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Flexonimus
Просто продублируй __init__
class FuckingModel(ShitModel):
    def __init__(self, *args, **kwargs):
        super(ShitModel).__init__(*args, **kwargs)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы