添加标签到现有模型,现在它的管理如何工作?

时间:2010-04-01 12:24:00

标签: python django django-admin django-tagging

我想将StackOverflow样式的标记输入添加到我的博客模型中。这是一个已经包含大量数据的模型。

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

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

我认为这就是我所需要的所以我浏览了我的旧博客文章数据库(这是一个新移植的博客)并复制了标签。它有效,我可以显示标签并按标签过滤。

但是,我刚刚写了一个新的BlogPost并意识到那里没有标记字段。

阅读文档(巧合的是,干得足以用作止汗剂),我找到了TagField。认为这只是现有标记寄存器上的管理器样式层,我添加了它。它抱怨没有Tag列。

我宁愿不对标签进行非规范化,只是为了满足创建输入界面的要求。是否有我可以在模型上设置的TagManager类?

    tags = TagManager() # or somesuch

2 个答案:

答案 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将不起作用,因为表已经存在。