我想将StackOverflow样式的标记输入添加到我的博客模型中。这是一个已经包含大量数据的模型。
class BlogPost(models.Model):
# my blog fields
try:
tagging.register(BlogPost)
except tagging.AlreadyRegistered:
pass
我认为这就是我所需要的所以我浏览了我的旧博客文章数据库(这是一个新移植的博客)并复制了标签。它有效,我可以显示标签并按标签过滤。
但是,我刚刚写了一个新的BlogPost并意识到那里没有标记字段。
阅读文档(巧合的是,干得足以用作止汗剂),我找到了TagField。认为这只是现有标记寄存器上的管理器样式层,我添加了它。它抱怨没有Tag列。
我宁愿不对标签进行非规范化,只是为了满足创建输入界面的要求。是否有我可以在模型上设置的TagManager类?
tags = TagManager() # or somesuch
答案 0 :(得分:2)
您是否尝试在模型中使用TagField()而不是注册模型?
from tagging.fields import TagField
class BlogPost(models.Model):
# ...
tags = TagField()
答案 1 :(得分:0)
喜欢istruble说(对不起我不能评论上面): 您是否尝试在模型中使用TagField()而不是注册模型?
from tagging.fields import TagField
class BlogPost(models.Model):
# ...
tags = TagField()
但之后,您必须更改数据库表。我建议备份你的数据库。然后运行manage.py reset APPNAME
检查表的更改方式。恢复备份并尝试更改表,以使其看起来像新表。这样你就不会丢失数据;)
请记住,syncdb将不起作用,因为表已经存在。