0

姜戈:3.0.6

下面是我尝试为管理员组织标签和标签(使用 django-taggit)。

from taggit.managers import TaggableManager # django-taggit
from taggit.models import TaggedItemBase # django-taggit

class SpecialAdminTaggedPost(TaggedItemBase):
    content_object = models.ForeignKey('Post',
                                       on_delete=models.PROTECT,
                                       related_name="admin_tagged_post")


class Post(models.Model):
    tags = TaggableManager() # django-taggit
    admin_tags = TaggableManager(through=SpecialAdminTaggedPost) # django-taggit. 

这给出了以下错误:

ERRORS:
post.Post.admin_tags: (fields.E304) Reverse accessor for 'Post.admin_tags' clashes with reverse accessor for 'Post.tags'.
    HINT: Add or change a related_name argument to the definition for 'Post.admin_tags' or 'Post.tags'.
post.Post.tags: (fields.E304) Reverse accessor for 'Post.tags' clashes with reverse accessor for 'Post.admin_tags'.
    HINT: Add or change a related_name argument to the definition for 'Post.tags' or 'Post.admin_tags'.
System check identified 2 issues (0 silenced).

文档(不确定这里是否有任何帮助):https ://django-taggit.readthedocs.io/en/v0.10/custom_tagging.html

我该如何应对这个问题?

4

2 回答 2

0

您还需要related_name在模型描述中使用。我遇到了同样的问题。

像这样的更新模型将起作用:

class Post(models.Model):
    tags = TaggableManager(related_name='tags') 
    admin_tags = TaggableManager(related_name='admin_tags',
                                 through=SpecialAdminTaggedPost)  

我注意到是的,即使您使用与related_name模型字段相同的字段(即在您的情况下),它仍然可以正常工作。tagsadmin_tags

然后你自然会去访问你的帖子模型的标签:

<post_object>.tags 
# or 
<post_object>.admin_tags

此处列出了所有 API 。

于 2021-04-12T08:51:07.530 回答
-2

当我错误地将一个 Django 应用程序中的 models.py 替换为另一个 models.py 时,我遇到了同样的问题。所以我在不同的应用程序中有两个完全一致的 models.py 副本。请检查您的 models.py 是否一切正常。

于 2021-07-26T15:46:54.497 回答