在admin中使用django-taggit时出现错误
在一个Django项目中,我安装了django_taggit。现在在同步数据库的时候出现了这个错误。
AttributeError: 'TaggableManager' object has no attribute 'related'
我的models.py大概是这样的...
from taggit.managers import TaggableManager
class Post(models.Model):
title = models.CharField(max_length=100)
tags = TaggableManager()
而admin.py大概是这样的...
from django.contrib import admin
admin.site.register(Post)
1 个回答
1
Django的管理后台正在尝试使用TaggableManager来管理你的帖子对象。在使用自定义管理器的时候,你需要小心;正如文档中所说:
如果你使用自定义管理器,注意Django遇到的第一个管理器(按照在模型中定义的顺序)有特别的地位。Django会把类中定义的第一个管理器视为“默认”管理器,Django的多个部分(包括dumpdata)会专门使用这个管理器来处理该模型。因此,在选择默认管理器时要小心,以避免重写get_query_set()后无法获取你想要操作的对象。
解决这个问题的一个简单方法是手动先指定Post.objects
:
class Post(models.Model):
title = models.CharField(max_length=100)
objects = models.Manager()
tags = TaggableManager()