Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除任何其他对象未使用的标记_Python_Django_Django Taggit - Fatal编程技术网

Python 删除任何其他对象未使用的标记

Python 删除任何其他对象未使用的标记,python,django,django-taggit,Python,Django,Django Taggit,我试图修改此文件,以便在标记与任何其他对象不关联时将其删除 以下是我在文件末尾添加的内容: # --- # Delete the tags that are not used by any other object from django.db.models.signals import post_delete def after_deleting(sender, instance, **kwargs): if TaggedItem.objects.filter(tag=instan

我试图修改此文件,以便在标记与任何其他对象不关联时将其删除

以下是我在文件末尾添加的内容:

# ---

# Delete the tags that are not used by any other object
from django.db.models.signals import post_delete

def after_deleting(sender, instance, **kwargs):
    if TaggedItem.objects.filter(tag=instance.tag_id).count() == 0:
        print "Deleting tag", instance
        t = Tag.objects.get(pk=instance.tag_id)
        t.delete()

post_delete.connect(after_deleting, sender=TaggedItem)
它没有按预期工作。当我运行它时,请给出以下错误:

Exception Type: DoesNotExist
Exception Value:    Tag matching query does not exist.

非常感谢您的帮助。

我认为您不应该在筛选器中使用
instance.tag\u id
。尝试只使用
instance.tag
。然后在查找标记对象时,可以替换它-

t = Tag.objects.get(pk=instance.tag_id)
与-

t = instance.tag
将_id添加到字段是获取对象主键的快捷方式。因此,
instance.tag
是标记对象,
instance.tag\u id
是标记对象的主键

整个事情会更简洁-

# Delete the tags that are not used by any other object
from django.db.models.signals import post_delete

def after_deleting(sender, instance, **kwargs):
    if not TaggedItem.objects.filter(tag=instance.tag):
        print "Deleting tag", instance
        instance.tag.delete()

post_delete.connect(after_deleting, sender=TaggedItem)

在这些行中的哪一行发生异常?我从您的代码中得到以下错误:异常类型:AttributeError异常值:“int”对象没有属性“delete”异常位置:/Users/azio/.virtualenvs/proj/lib/python2.7/site-packages/taggit/models.py in,第172行Python Executable:/Users/azio/.virtualenvs/proj/bin/Python版本:2.7.3恐怕我回答的全部前提都错了:(无论如何,我已经更新了它-我认为这个版本应该可以正常工作。Django版本:1.4.2异常类型:DoesNotExist异常值:标记匹配查询不存在。异常位置:/Users/user/.virtualenvs/proj/lib/python2.7/site-packages/Django/db/models/query.py在get中,第366行Python可执行文件:/Users/user/.virtualenvs/proj/bin/PythonPython版本:2.7.3