一个网站的数据库经常会反应网页上的输入窗体的使用情况,而输入窗体中常常会有一些字段提供候选数据(例如在窗体中询问喜欢的颜色,品牌车型,尺寸大小等)供网友选择,那么如何在django中实现呢?
# 我们首先在models.py中加入以下内容
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)
如上述代码所示,现场建一个名为SIZES的元组,其中每一个元素也是元组。创建完之后执行python manage.py migrate
命令进行数据库表初始化,如果这是第一次设置Model的内容要先执行python manage.py makemigrations
命令。
回到admin.py中,加入这个新的类并注册 ( 提前创建了一个超级管理员 ) :
from django.contrib import admin
from mysite.models import Product
admin.site.register(Product)
这样打开浏览器,进入django的admin界面,打开Product的操作界面,就可以看到,Size采用列表的方式来呈现。
但是我们发现SIZES中的第一行数据拼错了,应该是Small才对,我们写成了Smaill。我们要修正这个错误很简单,只要在models.py中更正即可。但是要注意的是,因为Django把数据库的操作抽象化了,每一个新增以及修正步骤都必须被记录下来,以便于后续的数据库迁移操作,所以处理在models.py中把这个拼错的地方修正之外,还要执行python manage.py makemigrations
以及python manage.py migrate
记录下这个修正操作。
这些操作都会被记录在migrations文件夹下。