post_save 没有列出标签
post_save doesn't list tags
想法是在对象具有某些标签但未列出标签时使用 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)
这从不列出任何标签,它是一个空查询集。
然而,如果我然后打开 shell 并执行:
>>> l = List.objects.filter(pk=1).get()
>>> for tag in l.tags.all():
>>> print(tag.name)
它工作正常。
为什么标签在 post_save 中不可用?
标签被添加到列表中:
class List(models.Model):
tags = TaggableManager()
我假设 tags
是它的核心 ManyToManyField
。如果是这种情况,那么当您创建一个 List
实例时,它不会有任何 tags
集。您需要连接到 m2m_changed
signal 以确定 tags
集合中的更改。
想法是在对象具有某些标签但未列出标签时使用 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)
这从不列出任何标签,它是一个空查询集。
然而,如果我然后打开 shell 并执行:
>>> l = List.objects.filter(pk=1).get()
>>> for tag in l.tags.all():
>>> print(tag.name)
它工作正常。
为什么标签在 post_save 中不可用?
标签被添加到列表中:
class List(models.Model):
tags = TaggableManager()
我假设 tags
是它的核心 ManyToManyField
。如果是这种情况,那么当您创建一个 List
实例时,它不会有任何 tags
集。您需要连接到 m2m_changed
signal 以确定 tags
集合中的更改。