Как написать историю активности в Django, когда в модели есть более одного поля ManyToMany?
Мы используем библиотеку 'actstream', и она не обновляет фактические значения идентификаторов полей many2many в таблице истории. Всегда обновляется пустой список вместо списка идентификаторов.
class Parent():
name = models.CharField(max_length=255)
tags = TaggableManager(blank=True)
def __str__(self):
return self.name
class Table1():
name = models.CharField(max_length=255, null=True)
type = models.CharField(max_length=255, null=True)
parent_id = models.ManyToManyField(ParentTable, blank=True, related_name='%(class)s_parent_id')
tags = TaggableManager(blank=True)
def __str__(self):
return self.name
"id" - это автоматически увеличивающееся значение в таблице Django. Как только мы вызываем метод save(), выполняется сигнал post_save для записи дополнительной информации в таблицу actstream.tags и parent_id обновляются как [] вместо того, чтобы пользователь отправлял значения в таблицу actstream_action.Мы используем аннотацию @receiver(post_save) и выполняем action.send() соответственно
@receiver(post_save)
def capture_models_post_save(sender, instance, created, **kwargs):
userInfo = get_current_user()
action.send(userInfo, verb='created',description='created',action_object=instance, modification=model_to_dict(instance))