post_save不列出标签

时间:2018-12-10 19:57:40

标签: django django-taggit

如果对象具有某些标签,但未列出标签,则想法是使用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 :(得分:0)

我假设tagsManyToManyField的核心。如果真是这样,那么当您创建一个List实例时,它将不会设置任何tags。您需要连接到m2m_changed signal来确定tags集合中的更改。