2014-01-23 56 views
4

我在Centos VPS上有一個Django項目。Django沒有爲模型創建數據庫表(既沒有syncdb也沒有南)

我創建了一些模型並調試它們,以便它們驗證並且不會出錯。 我在MYAPP讓他們在一個「模型」文件夾,並添加每種型號此目錄中的init文件,例如:

從類別進口類

我增加了應用的settings.py INSTALLED_APPS並跑了:

Python manage.py syncdb 

它似乎工作正常,並添加了所有的表格除了我的應用程序的。

我再裝南亞和補充說,爲INSTALLED_APPS和執行syncdb再次試圖逃跑:

Python manage.py schemamigration myapp --initial 

它正確生成該文件,但沒有什麼是它(無表我的模型)。

在「模型」文件夾(usertype.py)示例文件

from django.db import models 

class UserType(models.Model): 
    usertype_id = models.PositiveIntegerField(primary_key=True) 
    description = models.CharField(max_length=100) 
    is_admin = models.BooleanField() 
    is_moderator = models.BooleanField() 

class Meta: 
    app_label = 'myapp' 

任何想法可能是錯誤怎麼回事,爲什麼我不能得到任何檢測模型?

+0

請編輯原始文章並將其添加爲文章的一部分,無法讀取,請點擊這裏 – yuvi

+0

我已將它添加到原文中,需要更多信息? – user3227889

+0

查看我的其他評論請 – yuvi

回答

8

你誤解了與南方合作的過程。南不只是另一個應用程序,它是一個管理工具。您的應用程序需要從開始的南方應用程序或轉換爲一個。話雖這麼說,這個過程就像這樣:

  1. 加入南方INSTALLED_APPS
  2. 運行執行syncdb首次
  3. 您的應用添加到INSTALLED_APPS *
  4. 運行南部初始化命令:

    python manage.py schemamigration myapp --initial 
    
  5. 遷移:

    python manage.py migrate 
    

如果你想一個項目轉換:將南

  • 運行後

    1. 運行執行syncdb:

      manage.py convert_to_south myapp

    從現在南方使用上管理你的遷移。

    * p.s。 - 如果您想要在自己的應用之前放置南部,您可以同時添加南部和您自己的應用。這是因爲Django的,爲了讀取INSTALLED_APPS - 在其上運行的所有應用程序執行syncdb,但安裝南下後,將不會安裝其餘的,而是告訴你使用南方命令來處理這些

    編輯

    我誤導了你。既然你把太多的重點放在了南方的東西上,我沒有意識到問題在於你試圖使用模型作爲目錄模塊而不是普通文件。這是一個recognized problem in django,和解決方法實際上是完全一樣的,你儘管擺在首位:

    說這是你的結構:

    project/ 
         myapp/ 
          models/ 
            __init__.py 
            bar.py 
    

    你需要bar.py看起來像這樣:

    from django.db import models 
    
    class Foo(models.Model): 
        # fields... 
    
        class Meta: 
         app_label = 'myapp' #you need this! 
    

    __init__.py需要看起來像這樣:

    from bar import Foo 
    

    確保它看起來像這樣,它會工作。

    UPDATE 18/08/2014

    票已更改爲wontfix,因爲顯然與app_label has been fixed更大的問題。 Huzza!

  • +0

    我正在使用 - 初始,因爲它是一個新的應用程序與數據庫中沒有模型。我嘗試了「manage.py convert_to_south myapp」只是爲了看看發生了什麼,它說:「這個應用程序沒有模型;這個命令適用於已經有模型syncdb'd的應用程序 製作一些模型,然後使用./manage.py相反,schemamigration myapp --initial。「如前所述,我可以運行 - 初始化,並按預期執行,除了生成的文件沒有任何內容外,它不檢測任何模型。這些都是新模式,其中沒有一個是db。 – user3227889

    +0

    1.您在帖子中描述的方式不是我描述它的方式2.您可以分享models.py嗎?此外,您認爲任何其他信息都是相關的。我不認爲我看到整個問題 – yuvi

    +0

    我現在已根據您的建議從「models」文件夾中的'__init __。py'中刪除引用。感謝你,雖然它沒有改變我的問題,如沒有檢測到模型所述。 – user3227889

    8

    運行以下命令

    python manage.py makemigrations yourappname 
    
    python manage.py migrate 
    

    注意它適用於Django的1.7版本的我。

    相關問題