今天開始建立App中的第一個Model,命名為Tutorial. Model的定義在main文件夾下的models.py中通過類進行,我們希望Tutorial這個model包含三個屬性:標題、內容和發布日期,因此修改models.py的內容如下:
from django.db import models # Create your models here. class Tutorial(models.Model): tutorial_title = models.CharField(max_length=200) tutorial_content = models.TextField() tutorial_published = models.DateTimeField('date published') def __str__(self): return self.tutorial_title
對與title我們使用了CharField,對於content我們使用了TextField,他們的區別在於CharField一般用於有長度限制的內容,TextFeild一般沒有長度限制。詳細解釋可參考幫助文檔。
這里我們寫完了Tutorial這個model,接下來我們需要將這個model安裝到我們的app中,這一步在settings.py中進行設置,我們在INSTALLED_APPS中添加'main.apps.MainConfig',那么MainConfig在哪里呢?我們打開main文件夾下的apps.py即可看到MainConfig這個類,settings.py中的INSTALLED_APPS添加后內容如下:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'main.apps.MainConfig', ]
接下來我們需要進行數據遷移(migration),每次對model做出改變都需要進行一次遷移,遷移包括兩個步驟makemigrations和migrate。在命令行進行如下操作:
python manage.py makemigrations
執行完后,在執行下句: python manage.py migrate
然后再mysite/main/migrations這個文件夾下生成了一個文件
0001_initial.py,可以打開查看其內容。
接下來我們可以通過sql語句來建立一個Tutoria模型,在命令行輸入:
python manage.py shell
然后輸入:
from django.utils import timezone new_tutorial = Tutorial(tutorial_title='Title1',tutorial_content='This is some text', tutorial_published=timezone.now()) new_tutorial.save() for t in Tutorial.objects.all(): ... print(t.tutorial_title)
即可看到輸出Title1。另外也可通過數據庫查看軟件來查看具體內容,django默認使用的數據庫是sqlite,在mysite這個文件夾下可以看到一個文件db.sqlite3。通過安裝Navicat Premium可以查看各種數據庫,如下圖為剛剛創建的內容:
之后添加的內容都可以在此清楚的查看,非常方便。
參考鏈接:
[1] https://pythonprogramming.net/models-django-tutorial/