Django объединяет два сигнала m2m_change

у меня есть модель поста, которая имеет m2m-поле category и m2m-поле tag, в post post_save я хочу получить id категории и id тега из этого экземпляра модели поста, но после некоторых исследований я обнаружил, что m2m-поля не сохраняются в это время, и я хочу использовать сигнал m2m_changed, но поскольку у меня есть два m2m-поля, как я могу объединить два сигнала или в posts post_save есть ли способ подождать создания m2m-полей, или я должен создать пользовательский сигнал

class Category(models.Model):
    description = RichTextField(null=True, max_length=10000)
    name = models.CharField(max_length=300, null=False, blank=False)
    slug = models.CharField(max_length=400, null=True, blank=True, unique=True)
    parent = models.ForeignKey("Category", on_delete=models.CASCADE, null=True, blank=True)
    
    # readonly fields
    wp_category_id = models.CharField(max_length=10, null=False, editable=False)
    total_posts = models.CharField(max_length=10, null=True, editable=False)
    category_link = models.CharField(max_length=600, null=True, editable=False)
    
    def __str__(self) -> str:
        return f"{self.name}"

    class Meta:
        verbose_name_plural = "Categories"

class Tags(models.Model):
    description = RichTextField(null=True, max_length=10000)
    name = models.CharField(max_length=300, null=False, blank=False)
    slug = models.CharField(max_length=400, null=True, unique=True, blank=True)
    
    # readonly fields
    wp_tag_id = models.CharField(null=False, editable=False, max_length=10)
    tag_link = models.CharField(null=True, editable=False, max_length=400)
    
    def __str__(self) -> str:
        return f"{self.name}"

    class Meta:
        verbose_name_plural = "Tags"

class Posts(models.Model):
    wp_post_id = models.CharField(max_length=200, null=True, editable=False)
    slug = models.CharField(max_length=1000, null=True, unique=True, blank=True)
    status = models.CharField(choices=status_choices, max_length=200)
    ....
    sticky = models.BooleanField(default=False)
    
    categories = models.ManyToManyField(Category, related_name="categories", blank=True)
    tags = models.ManyToManyField(Tags, blank=True, related_name="tags")
    
    created = models.DateTimeField(auto_created=True, auto_now_add=True)

    def __str__(self) -> str:
        return f"{self.title}"

    class Meta:
        verbose_name_plural = "Posts"

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