1

Django プロジェクトで、django_taggit をインストールしました。プロジェクトをsyncdbすると、このエラーが発生します。

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)
4

1 に答える 1

1

Django 管理者は、TaggableManager を使用して投稿オブジェクトを管理しようとしています。カスタム マネージャーを使用する場合は注意が必要です。ドキュメントが指定するように:

カスタム Manager オブジェクトを使用する場合は、Django が最初に遭遇する (モデルで定義されている順序で) 特別なステータスがあることに注意してください。Django は、クラスで定義された最初の Manager を「デフォルト」の Manager として解釈し、Django のいくつかの部分 (dumpdata を含む) は、その Manager をそのモデル専用に使用します。結果として、 get_query_set() をオーバーライドすると、操作したいオブジェクトを取得できなくなるという状況を避けるために、デフォルト マネージャーの選択には注意することをお勧めします。

Post.objectsこれを回避する簡単な方法は、最初に手動で指定することです。

class Post(models.Model):
    title = models.CharField(max_length=100)
    objects = models.Manager()
    tags = TaggableManager()
于 2013-03-02T00:26:09.867 に答える