標籤:
python manage.py startapp polls建立一個叫polls的app
編輯檔案 polls/models.py :
1from django.db import models2class Poll(models.Model):3 question = models.CharField(max_length=200)4 pub_date = models.DateTimeField(‘date published‘)
再次編輯檔案 settings.py ,修改設定INSTALLED_APPS包含字串 ‘polls‘ 。修改後的配置如下:
INSTALLED_APPS = (‘django.contrib.auth‘,‘django.contrib.contenttypes‘,‘django.contrib.sessions‘,‘django.contrib.sites‘,‘polls‘)
現在Django知道要去包含 polls 這個應用了。
在 Django 中,有一個記錄了項目中所有 model 中繼資料的表,就是 ContentType。表中一條記錄便對應著一個存在的model ,那麼我們只要通過一個中繼資料表的 id 和一個具體資料表中的 id,便可以找到任何model中的任何記錄。該模組包含在django預設模組中
django1.9以後,使用migrate代替syscdb
運行python manage.py migrate來為資料庫中每個應用建立一個資料庫表。
起初一直報錯:
RuntimeError: Model class django.contrib.auth.models.Permission doesn‘t declare an explicit app_label and isn‘t in an application
in INSTALLED_APPS.
原來我把django的settings檔案裡的模組都注釋掉了,而相應關聯的位置沒有更改,於是解除注釋重新運行,過了
可以運行以下的命令來進行檢查跟蹤:
- python manage.py validate -- 檢查模型的結構錯誤。
- python manage.py sqlcustom polls -- 輸出所有為應用定義的自訂SQL語句 (例如表修改和約束)。
- python manage.py sqlclear polls -- 根據已存在的表,輸出這個應用中必要的DROP TABLE語句。
- python manage.py sqlindexes polls -- 輸出這個應用CREATE INDEX語句。
- python manage.py sqlall polls -- sql,sqlcustom和sqlindexes命令產生的SQL語句的結合。
python manage.py migrate主要作用是產生相應的要使用的資料庫,對應的models需要在settings裡設定,如果有所更改,只需要用manage.py makemigrations命令來提交修改,然後運行python manage.py migrate就可以更新資料庫。
更新完畢後,你就可以在資料庫裡看到表,如果看不到,可以用api方式校正,詳見下篇
python27+django建立app