2012-07-15 138 views
4

我正在使用django創建博客。它安裝在虛擬環境中,並已安裝django-tagging。我正在做南遷的數據庫遷移,一切似乎都適合我的遷移,但似乎標籤表沒有被創建,所以當我通過管理員添加一篇博文時,我得到了着名的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_APP四處移動應用程序的順序S(認爲標籤可能需要在我的應用程序之前),但它似乎沒有任何區別。

我知道這將是簡單的東西,但無法弄清楚。

謝謝 Aaron

回答

11

好的。我簡直不敢相信這是多麼的簡單,答案就在我面前。但是,如果其他人碰巧處於相同的位置,希望他們會偶然發現我現在自我回答的這個問題。

這個問題與django-tagging無關。這與南方只會遷移我告訴它遷移的事實有關!和南方一樣真棒(我現在永遠不會使用沒有它的django項目,現在我已經找到它了) - 它不會遷移第三方應用程序。我假設南方會查看我的settings.py文件,並確定哪些已安裝的應用程序需要與數據庫同步,然後將它們提取出來,就像我正常運行syncdb一樣。 這不是南方所做的,所以安裝的每個第三方應用程序都需要自行遷移以確保其存在於數據庫中。 所以,我不得不這樣做,以獲得表到我的數據庫:

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

我敢肯定有辦法把所有的遷移在一起,但我確定由一個做他們一個我小規模的東西現在 - 很高興有人詳細說明這個答案,並揭示通過單一命令同時遷移所有應用程序的最佳方式 - 有可能嗎?

+0

我搞砸了,並創建了一些垃圾遷移,試圖找出這個之前,我看到這個答案。要手動刪除這些垃圾,我必須找到遷移的存儲位置。由於它是第三方應用程序不在項目樹上。我發現它存儲在 /lib/python2.7/site-packages//migrations/ – Medeiros 2013-10-23 17:27:33

+0

我之前也處於類似的位置,所以感謝分享!當我添加'django.contrib.comments'並遇到同樣的錯誤時,我遇到了麻煩。 'schema django.contrib.comments --initial'解決了它。 – 2013-10-27 19:40:22

相關問題