如果对象具有某些标签,但未列出标签,则想法是使用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()
答案 0 :(得分:0)
我假设tags
是ManyToManyField
的核心。如果真是这样,那么当您创建一个List
实例时,它将不会设置任何tags
。您需要连接到m2m_changed
signal来确定tags
集合中的更改。