post_save не перечисляет теги
Идея состоит в том, чтобы использовать сигнал post_save для выполнения действий, если у объекта есть определенные теги, но теги не перечислены
@receiver(post_save, sender=List)
def list_saved(sender, instance, created, **kwargs):
if created:
for tag in instance.tags.all():
print(tag.name)
Это никогда не перечисляет никаких тегов, это пустой набор запросов.
Но если я тогда открою оболочку и сделаю:
>>> l = List.objects.filter(pk=1).get()
>>> for tag in l.tags.all():
>>> print(tag.name)
Работает нормально.
Почему теги недоступны в post_save?
Теги добавляются в список как таковой:
class List(models.Model):
tags = TaggableManager()
1 ответ
Решение
Я предполагаю tags
это ManyToManyField
в основе этого. Если это так, то когда вы создаете List
экземпляр у него не будет tags
задавать. Вам нужно будет подключиться к m2m_changed
сигнал для определения изменений в tags
коллекция.