南不为第三方安装的应用程序创建表

Alp*_*aus 4 django postgresql django-south

我正在使用django创建一个博客.它安装在虚拟环境中,并已安装django-tagging.我在做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...
Run Code Online (Sandbox Code Playgroud)

这是我的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)
Run Code Online (Sandbox Code Playgroud)

并且,从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',
)
Run Code Online (Sandbox Code Playgroud)

我已经尝试在INSTALLED_APPS中移动应用程序的顺序(认为标记可能需要在我的应用程序之前),但它似乎没有任何区别.

我知道它会变得简单,但无法弄清楚.

谢谢亚伦

Alp*_*aus 11

好.我简直不敢相信,答案就在我面前.但是,如果其他人恰好处于相同的位置,希望他们会偶然发现这个我现在将自己回答的问题.

这个问题与django-tagging无关.这是因为南方只会迁移我告诉它迁移的东西!像南方一样令人敬畏(我现在永远不会使用django项目,我现在已经找到了它) - 它不会迁移第三方应用程序.我假设南方会查看我的settings.py并找出需要与数据库同步的已安装的应用程序,然后将它们捡起来,就像我正常运行syncdb一样.这不是南方所做的,因此每个安装的第三方应用程序都需要自行迁移以确保它存在于数据库中.所以,我只需要将表格放入我的数据库:

./manage.py schemamigration tagging --initial
./manage.py migrate tagging
Run Code Online (Sandbox Code Playgroud)

我确信有一种方法可以将所有迁移整合在一起,但我现在可以逐一为我的小规模的东西做这些 - 很高兴有人详细说明这个答案并揭示迁移所有应用程序的最佳方式同时用一个命令 - 这可能吗?