在现有模型中添加了标记,现在它的管理是如何工作的?

2024-05-16 17:53:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想给我的博客模型添加一个StackOverflow样式的标签输入。这是一个已经有很多数据的模型。在

class BlogPost(models.Model):
    # my blog fields

try:
    tagging.register(BlogPost)
except tagging.AlreadyRegistered:
    pass

我以为这就是我所需要的,所以我浏览了我以前的博客文章数据库(这是一个新移植的博客)并将标签复制到了里面。它起作用了,我可以显示标签并按标签过滤。在

然而,我刚写了一篇新的博客,意识到那里没有标签栏。在

阅读文档(巧合的是,足够干的可以作为止汗剂使用),我找到了TagField。我想这只是现有标记寄存器上的一个管理器风格的层,我添加了它。它抱怨没有标记列。在

我不想仅仅为了满足创建一个输入它们的接口而对标签进行反规范化。是否有一个TagManager类可以在模型上设置?在

^{pr2}$

Tags: 数据标记模型fieldsmodelmodelsmy样式
2条回答

您是否尝试在模型中使用TagField()而不是注册模型?在

from tagging.fields import TagField

class BlogPost(models.Model):
    # ...
    tags = TagField()

就像istruble说的(抱歉,我不能在上面发表评论): 您是否尝试在模型中使用TagField()而不是注册模型?在

from tagging.fields import TagField

class BlogPost(models.Model):
    # ...
    tags = TagField()

但是在那之后,你必须改变你的数据库表。我建议备份你的数据库。然后运行manage.py reset APPNAME检查表是如何更改的。恢复备份并尝试更改表,使其看起来像新表。这样您就不会丢失数据;)

记住,syncdb将无法工作,因为表exist allready。在

相关问题 更多 >