定义模型 模型,属性,表,字段之间的关系 一个模型类在数据库中对应一张表,在模型类中定义的属性,对应该模型对照表中的一个字段 定义属性:见下文 创建模型类 元选项 在模型类中定义Meta类,用于设置元信息 示例: class Meta: db_table = "students" ordering = ['id'] db_table 定义数据表名,推荐用小写字母,数据表名默认为项目名小写_类名小写 ordering 对象的默认排序字段,获取对象的列表时使用 示例: ordering['id'] id按升序排列 ordering['-id'] id按降序排列 注意:排序会增加数据库开销 模型成员 类属性 隐藏类属性objects: 是Manager类型的一个对象,作用是与数据库进行交互 当定义模型类时没有指定管理器,则Django为模型创建一个名为objects的管理器 自定义管理器示例: 定义stuObj管理器: stuObj = models.Manager() 当为模型指定模型管理器,Django就不再为模型类生成objects模型管理器了。 自定义管理器Manager类 模型管理器是Django的模型进行与数据库交互的窗口,一个模型可以有多个模型管理器 作用: 向管理器类中添加额外的方法 修改管理器返回的原始查询集 通常会重写get_queryset()方法 代码示例: class StudentsManager(models.Manager): def get_queryset(self): return super(StudentsManger, self).get_queryset().filter(isDelete=False) class Students(model.Moder): # 自定义模型管理器 # 当自定义模型管理器,objects就不存在了 stuObj = models.Manger() stuObj2 = StudentsManager() 创建对象 目的:向数据库中添加数据 当创建对象时,django不会对数据库进行读写操作,当调用save()方法时才与数据库交互,将对象保存在数据库表中。 注意: __init__方法已经在父类models.Model中使用,在自定义的模型中无法使用。 方法: 在模型类中增加一个类方法,示例如下: class Students(model.Moder): ...snip... @classmethod def createStudent(cls, name, age, gender, contend, grade,lastT, createT, isD=False): stu = cls(sname=name, sage=age, sgender=gender, scontend=contend, sgrade=grade, lastTime=lastT, createTime=createT, isDelete=isD) return stu 在自定义管理器中添加一个方法,示例如下: class StudentsManager(models.Manager): def get_queryset(self): return super(StudentsManager, self).get_queryset().filter(isDelete=False) def createStudent(self, name, age, gender, contend, grade, lastT, createT, isD=False): stu = self.model() # print(type(grade)) stu.sname = name stu.sage = age stu.sgender = gender stu.scontend = contend stu.sgrade = grade stu.lastTime = lastT stu.createTime = createT return stu