在数据库中往往有一些,几个固定结果的字段,比如,姓名男女,这是就可以用choices参数,对指定字段在数据库中存储
# models.py
class Userinfo(models.Model):
username = models.CharField(max_length=30)
password = models.CharField(max_length=30)
choices = (
(1, 'male'),
(2, 'female'),
)
"""
1. 如果存在上面元组中数字会取出什么值
2. 如果存的数字不在元组范围内,会取出什么值
数字没有对应关系也可以存
"""
gender = models.IntegerField(choices=choices)
# 数据库中数据
1 randy 123 1
2 老王 324 2
3 小王 234 3
#test.py
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ajax.settings")
import django
django.setup()
from app import models
user_obj = models.Userinfo.objects.filter(pk=1).first()
print(user_obj.username)
print(user_obj.password)
# 针对choices字段,如果你想要获取数字对应的中文,你不能直接点字段
# 固定句式 数据对象.get_字段名_display() 当没有对应关系的时候,该句式获取到的还是数字
print(user_obj.get_gender_display())
randy
123
male
总结:
例如:
record_choices = (('checked', "已签到"),
('vacate', "请假"),
('late', "迟到"),
('noshow', "缺勤"),
('leave_early', "早退"),
)
record = models.CharField("上课纪录", choices=record_choices, default="checked",
score_choices = ((100, 'A+'),
(90, 'A'),
(85, 'B+'),
(80, 'B'),
(70, 'B-'),
(60, 'C+'),
(50, 'C'),
(40, 'C-'),
(0, ' D'),
(-1, 'N/A'),
(-100, 'COPY'),
(-1000, 'FAIL'),
)
score = models.IntegerField("本节成绩", choices=score_choices, default=-1)
MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。
Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性。
Django框架的不同之处在于它拆分的三部分为:Model(模型)、Template(模板)和View(视图),也就是MTV框架。
模型: 负责业务对象与数据库的映射(ORM),视图: 负责与用户的交互(页面),控制器: 接受用户的输入调用模型和视图完成用户的请求
Model(模型):负责业务对象与数据库的对象(ORM)
Template(模版):负责如何把页面展示给用户(html)
View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
原文:https://www.cnblogs.com/randysun/p/11755797.html