4

私はブログを作成するためにdjangoを使用しています。仮想環境内にインストールされ、djangoタグ付けがインストールされています。私は南でDB移行を行っており、すべてが私の移行で正常に機能しているようですが、タグ付けテーブルが作成されていないようです。そのため、管理者を介してブログ投稿を追加しようとすると、有名なpostgresqlエラーが発生します。

Exception Type: DatabaseError at /admin/bppsite/blogpost/add/
Exception Value: relation "tagging_tag" does not exist
LINE 1: ...ECT "tagging_tag"."id", "tagging_tag"."name" FROM "tagging_t...

これが私のmodels.pyの関連部分です:

from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^tagging\.fields\.TagField"])

from tagging.models import Tag
from tagging.fields import TagField

class BlogPost(models.Model):
    title = models.CharField(max_length = 255)
    text = models.TextField()
    author = models.ForeignKey(User)
    created = models.DateTimeField(auto_now_add = True)
    modified = models.DateTimeField(auto_now = True)
    status = models.CharField(max_length = 10, choices=POST_STATUS_CHOICES,     default='DRAFT')
    slug = models.SlugField(max_length = 255, blank=True)
    category = models.ManyToManyField(Category)
    tags = TagField()

    def __unicode__(self):
        return self.title

    class Meta:
        ordering = ["-created"]

    def save(self):
        if not self.id:
            self.slug = slugify(self.title)
        super(BlogPost, self).save()

    def set_tags(self, tags):
        Tag.objects.update_tags(self, tags)

    def get_tags(self, tags):
        return Tag.objects.get_for_object(self)

そして、settings.pyからインストールされたアプリ:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'south',
    'tinymce',
    'tagging',
    'bppsite',
)

INSTALLED_APPSでアプリの順序を移動しようとしましたが(タグ付けはアプリの前に行う必要があるかもしれないと考えています)、違いはないようです。

簡単なことになるとは思いますが、理解できません。

ありがとうアーロン

4

1 に答える 1

11

わかった。こんなにシンプルだったなんて信じられません。答えは目の前にありました。ただし、他の誰かがたまたま同じ立場にいる場合は、この質問に出くわして、私が自己回答することを願っています。

この問題は、djangoのタグ付けとは何の関係もありません。南は私が移住するように言ったものだけを移住させるという事実と関係があります!南と同じくらい素晴らしいです(私が見つけたので、それなしでdjangoプロジェクトを使用することは決してありません)–サードパーティのアプリを移行しません。私は、southがsettings.pyを調べて、インストールされているどのアプリをデータベースと同期する必要があるかを調べ、通常どおりsyncdbを実行しているかのようにそれらを取得すると想定していました。これはsouthが行うことではないため、インストールされている各サードパーティアプリを独自に移行して、データベースに確実に存在させる必要があります。したがって、テーブルをデータベースに取り込むために必要なことはすべて次のとおりです。

./manage.py schemamigration tagging --initial
./manage.py migrate tagging

すべての移行をまとめる方法があると確信していますが、今のところ、小規模なもののために1つずつ実行しても問題ありません。誰かがこの回答を詳しく説明し、すべてのアプリを移行するための最良の方法を明らかにしてくれることをうれしく思います。単一のコマンドで同時に–それは可能ですか?

于 2012-07-16T11:54:59.660 に答える