2

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

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

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

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

然而,我刚刚写了一个新的 BlogPost 并意识到那里没有标签字段。

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

我宁愿不要仅仅为了满足创建输入它们的接口而对标签进行非规范化。我可以在模型上设置一个 TagManager 类吗?

    tags = TagManager() # or somesuch
4

2 回答 2

2

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

from tagging.fields import TagField

class BlogPost(models.Model):
    # ...
    tags = TagField()
于 2010-04-01T15:39:32.747 回答
0

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

from tagging.fields import TagField

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

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

请记住,由于表已经存在,syncdb 将无法工作。

于 2010-04-10T16:49:14.297 回答