2

私のブログモデルに StackOverflow スタイルのタグ入力を追加したかったのです。これは、すでに多くのデータが含まれているモデルです。

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

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

必要なのはそれだけだと思ったので、ブログ投稿の古いデータベース (これは新しく移植されたブログです) を調べて、タグをコピーしました。これは機能し、タグを表示してタグでフィルターすることができました。

ただし、新しい BlogPost を作成したところ、そこにタグ フィールドがないことに気付きました。

ドキュメントを読んで(偶然にも、制汗剤として使用できるほど乾燥していた)、TagField を見つけました。これは、既存のタグ付けレジスターに対するマネージャー スタイルのレイヤーにすぎないと考えて、追加しました。Tag 列がないことを訴えていました。

タグを入力するためのインターフェイスを作成するためだけに、タグを非正規化したくありません。モデルに設定できる 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 に答える