Django(16)ORM——创建单表模型
创建单表
from django.db import models
# Create your models here.
class Student(models.Model):
#1. 字段[数据库表字段对应]
sex_choices = (
(0, "女"),
(0, "男"),
(0, "保密")
)
# id = models.AutoField(primary_key=True, null=False, verbose_name="主键")
# django会为表创建自动增长的主键列,每个模型只能有一个主键列/还设置了一个调用别名 pk
# 默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。
name = models.CharField(max_length=32, unique=True, verbose_name="姓名")
# SQL: name varchar(20) not null comment="姓名"
# SQL: key(name),
# 字段最大为32字节,有唯一约束,name==姓名
age = models.SmallIntegerField(verbose_name="年龄", default=18)
# SQL: age smallint not null comment="年龄"
# 年龄默认为18
sex = models.SmallIntegerField(choices=sex_choices, verbose_name="性别")
# SQL: sex tinyint not null comment="性别"
# 只能在sex_choices中选择一个
birthday = models.DateField(verbose_name="生日", auto_now=True)
# 日期参数auto_now表示每次保存对象时,自动设置该字段为当前时间。参数auto_now_add表示当对象第一次被创建时自动设置当前。默认为False
classmate = models.CharField(db_column="class",max_length=5, db_index=True, verbose_name="班级", default="")
# 在Python中class是关键字,不能直接拿来用,但是可以通过db_column来修改表名为class
# db_index 若值为True, 则在表中会为此字段创建索引,默认值是False。 相当于SQL语句中的key
# SQL: class varchar(5) not null comment="班级"
# SQL: key(class)
#2. 数据表结构信息
class Meta:
db_table = 'tb_student' # 指明数据库表名,如果没有指定表明,则默认为子应用目录名_模型名称,例如: users_student
verbose_name = '学生信息表' # 在admin站点中显示的名称
verbose_name_plural = verbose_name # 显示的复数名称
#3. 自定义数据库操作方法
def __str__(self):
"""定义每个数据对象的显示信息"""
return "<User %s>" % self.name
浙公网安备 33010602011771号