post_save не перечисляет теги - PullRequest
0 голосов
/ 10 декабря 2018

Идея состоит в том, чтобы использовать сигнал 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 Ответ

0 голосов
/ 11 декабря 2018

Я полагаю, tags - это ManyToManyField в основе этого.Если это так, то при создании экземпляра List для него не будет установлен tags.Вам нужно будет подключиться к сигналу m2m_changed , чтобы определить изменения в коллекции tags.

...