zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    PHP 获取图片的类型
    Shell 一次性写入多行文本
    LUA笔记
    ubuntu apt-get 出现NO_PUBKEY的解决方案
    Angular2 使用总结
    java多线程体系
    Spring ConversionFailedException: Failed to convert from type java.util.ArrayList<?> to type java.util.List<org.springframework.core.io.Resource>
    Tomcat 插件启动 Web程序
    保存图片
    Ubuntu FTP配置与安装
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/10356239.html
Copyright © 2011-2022 走看看