django模型创建

定义模型
        模型,属性,表,字段之间的关系
            一个模型类在数据库中对应一张表,在模型类中定义的属性,对应该模型对照表中的一个字段
        定义属性:见下文
        创建模型类
        元选项
            在模型类中定义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
posted @ 2019-02-08 15:39  超级学渣渣  阅读(986)  评论(0编辑  收藏  举报