代码之家  ›  专栏  ›  技术社区  ›  Oli

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

  •  2
  • Oli  · 技术社区  · 16 年前

    class BlogPost(models.Model):
        # my blog fields
    
    try:
        tagging.register(BlogPost)
    except tagging.AlreadyRegistered:
        pass
    

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

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

    阅读文档(巧合的是,干得足以用作止汗剂),我找到了标签。我以为这只是一个管理器风格的层,覆盖了现有的标记寄存器,于是我添加了它。它抱怨没有标签栏。

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

        tags = TagManager() # or somesuch
    
    2 回复  |  直到 16 年前
        1
  •  2
  •   istruble kalyan    16 年前

    from tagging.fields import TagField
    
    class BlogPost(models.Model):
        # ...
        tags = TagField()
    
        2
  •  0
  •   HWM-Rocker    16 年前

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

    from tagging.fields import TagField
    
    class BlogPost(models.Model):
        # ...
        tags = TagField()
    

    但在那之后,您必须更改数据库表。我建议你备份一下你的数据库。那就跑吧 manage.py reset APPNAME 看看桌子是怎么变的。还原备份并尝试更改表,使其看起来像新的表。这样您就不会丢失数据;)

    记住,syncdb不会工作,因为表已经存在。