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"