一個網(wǎng)站的數(shù)據(jù)庫經(jīng)常會反應(yīng)網(wǎng)頁上的輸入窗體的使用情況,而輸入窗體中常常會有一些字段提供候選數(shù)據(jù)(例如在窗體中詢問喜歡的顏色,品牌車型,尺寸大小等)供網(wǎng)友選擇,那么如何在django中實現(xiàn)呢?
# 我們首先在models.py中加入以下內(nèi)容
class Product(models.Model):
SIZES = (
('S', 'Smaill'),
('M', 'Medium'),
('L', 'Large'),
)
sku = models.CharField(max_length=5)
name = models.CharField(max_length=20)
price = models.PositiveIntegerField()
size = models.CharField(max_length=1, choices=SIZES)
如上述代碼所示,現(xiàn)場建一個名為SIZES的元組,其中每一個元素也是元組。創(chuàng)建完之后執(zhí)行python manage.py migrate命令進(jìn)行數(shù)據(jù)庫表初始化,如果這是第一次設(shè)置Model的內(nèi)容要先執(zhí)行python manage.py makemigrations命令。
回到admin.py中,加入這個新的類并注冊 ( 提前創(chuàng)建了一個超級管理員 ) :
from django.contrib import admin
from mysite.models import Product
admin.site.register(Product)
這樣打開瀏覽器,進(jìn)入django的admin界面,打開Product的操作界面,就可以看到,Size采用列表的方式來呈現(xiàn)。
但是我們發(fā)現(xiàn)SIZES中的第一行數(shù)據(jù)拼錯了,應(yīng)該是Small才對,我們寫成了Smaill。我們要修正這個錯誤很簡單,只要在models.py中更正即可。但是要注意的是,因為Django把數(shù)據(jù)庫的操作抽象化了,每一個新增以及修正步驟都必須被記錄下來,以便于后續(xù)的數(shù)據(jù)庫遷移操作,所以處理在models.py中把這個拼錯的地方修正之外,還要執(zhí)行python manage.py makemigrations以及python manage.py migrate記錄下這個修正操作。
這些操作都會被記錄在migrations文件夾下。