关于模型:

1:一个模型类对应一个表,模型类中的属性对应表中的一个字段

2:字段类型(数据库支持的类型)

模型属性

字符串

1:CharField(Maxlength=长度)

models.CharField

2:TextFiled 大文本

3:IntegerField 整数

4:DecimalField(max_digits=None,decimal_places=None) 小数

max_digits 位数总数 decimal_places 小数点后的位数

5:FloatField 小数

6:BooleanField true/false字段

7:DateField([auto_now=False,auto_now_add=False]) 日期

参数 auto_now:表示每次保存对象时,自动设置该字段为当前时间

auto_now_add:表示当对象第一次被创建时,设置该字段为当前时间

这两个参数互斥

8:TimeField 时间 参数同上

9:DateTimeField 日期加时间 参数同上

10:FileField 一个上传文件你的字段

11:ImageField 继承了FileField的所有属性和方法,对上传的对象进行确认,确保是一个image

字段选项

1:null 默认False 若为true 则以null存入数据库

2:blanke True则允许空值

3:db_column 命名数据库列名称,不设置默认模型里的属性名

4:primary_key 主键

5:unique 若为true 则这个字段在表中有唯一值

模型成员

类属性

(1)objects

manage 的一个对象,作用是与数据库进行交互

例:Students.objects.get(pk=1) 获取id为1的学生,可以进行增删改查

当定义模型类时没有定义管理器,系统自动定义一个名叫objects的管理器

(2)自定义管理器

例:

class grades(models.Model):
stuobj=gradesManager()
gname=models.CharField(max_length=20)
def __str__(self):
return self.gname

在Students模型类中加入:

stuobj=models.Manager()#设定一个名叫obj的管理器

在以后这个类的访问中,可以使用Students.obj.get()或者all()等方法

自定义后,objects就不能再使用了

(3)自定义管理器Manager类

模型管理器是django的模型与数据库进行数据交互的接口,一个模型类可以有多个管理器

用处:

1:可以添加额外的方法(即除get(),all())

2:修改管理器返回的查询集合(过滤)->重写get.queryset()方法

例:

class gradesManager(models.Manager):
def get_queryset(self):
return super(gradesManager,self).get_queryset().filter(id=1)

此处重写的get_queryset()方法,筛选出id=1的信息

当然使用的时候要用stuobj()进行操作

2:创建对象

目的 向数据库中添加数据

当创建对象时,Django不会与数据库进行交互,当调用save()时,才与数据库进行交互,将数据保存在数据库中的表中

注意:__init__方法已经在models.Model使用,在自定义的模型中无法使用

方法1: 在模型类中增加一个类方法
@classmethod
def creatstudent(cls,name):
stu=cls(gname=name)
return stu

使用 在views中:

def CreatStudent(request):
stu=grades.creatstudent("芝庞顿")
stu.save()
return HttpResponse('融合升级,芝庞顿')
方法2:在定义管理器中添加一个方法

定义一个类方法创建对象

例:

class gradesManager(models.Manager):
def get_queryset(self):
return super(gradesManager,self).get_queryset().filter(id=1)
#创建对象
def creatStudent(self,name):
stu=self.model()
stu.gname=name
return stu

使用:在views里

def Creatstudent(request):
stu=grades.stuobj2.creatStudent("海帕杰顿")#在grades类中创建了stuobj2=gradesManager()
stu.save()
return HttpResponse("1234")

Django 模型笔记的更多相关文章

  1. Django学习笔记(2)——模型,后台管理和视图的学习

    一:Web投票示例 本节我们首先从全局范围再复习一下Django的概念,让自己对Django的设计理念, 功能模块,体系架构,基本用法有初步的印象. Django初始的详细博客内容:请点击我 该应用包 ...

  2. Django学习笔记(16)——扩展Django自带User模型,实现用户注册与登录

    一,项目题目:扩展Django自带User模型,实现用户注册与登录 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册,登录,用户认证,注销,修改密码等功能. ...

  3. 运维开发笔记整理-Django模型语法

    运维开发笔记整理-Django模型语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.模型基本概念 1>.什么是模型 模型是你的数据唯一的,权威的信息源.它包含你所存储数 ...

  4. Django 学习笔记之四 QuerySet常用方法

    QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...

  5. Django学习笔记(三)—— 型号 model

    疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'defaul ...

  6. Django入门笔记

    Django入门笔记 **文档包含Django安装包.学习的笔记.代码等 安装 Django参考附件,只需要把附件拷贝到你需要的目录就行.Django是1.8.16版本 Python:在附件中,其中有 ...

  7. Django学习笔记(9)—— 开发用户注册与登录系统

    一,项目题目: 开发用户注册与登录系统 该项目主要练习使用Django开发一个用户注册与登录的系统,通过这个项目然后巩固自己这段时间所学习的Django知识. 二,项目需求: 开发一个简单的用户登录与 ...

  8. Django学习笔记(4)——Django连接数据库

    前言 在MVC或者MTV设计模式中,模型(M)代表对数据库的操作.那么如何操作数据库呢?本小节就认真学习一下.首先复习一下Django的整个实现流程 ,然后再实现一下使用数据库的整个流程,最后学习一下 ...

  9. Django学习笔记二

    Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...

随机推荐

  1. NEWMING

    这里只是列举一些常用的文件操作命令. cd 跳转切换目录 # 格式:cd dirname 比如在打开用户主目录盘下的 myidoc 文件夹 cd ~/myidoc 跳转到当前目录的上一级 cd ../ ...

  2. 《AndroidStudio导入安卓源码-idegen》---可方便查看安卓源代码

    idegen是Android源码中的一个模块,需要编译一下.生成一个jar包.然后再进行构建生成AndroidStudio配置相关文件. > 什么是idegen 要将Android系统源代码工程 ...

  3. ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能

    前两篇文章主要介绍了类和对象.类的继承,如果想了解更多理论请查阅<ES6学习笔记(一):轻松搞懂面向对象编程.类和对象>.<ES6学习笔记(二):教你玩转类的继承和类的对象>, ...

  4. USB小白学习之路(6) IIC EEPROM读取解析

    IIC EEPROM读取解析 1. 编译错误处理(这里可以忽略) 在解压包解压了程序后,直接编译,出现如下错误. *** WARNING L14: INCOMPATIBLE MEMORY MODEL ...

  5. c#版阿里云oss上传——基于layui、pupload的oss 后端web端直传的vue组件

    废话前言 去年,做项目用到oss上传,度娘上逛了一圈写了个前后端代码结合的c#版oss上传. 今年又要用到oss上传时发现很难复用,复用改动的范围太大,显然这个轮子不合格.于是想了下,花了一天的时间( ...

  6. 沪江iKcamp出品微信小程序教学共5章16小节汇总(含视频)

  7. Codeforces Round #295 (Div. 2) B. Two Buttons 520B

    B. Two Buttons time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  8. SSM动态切换数据源

    有需求就要想办法解决,最近参与的项目其涉及的三个数据表分别在三台不同的服务器上,这就有点突兀了,第一次遇到这种情况,可这难不倒笔者,资料一查,代码一打,回头看看源码,万事大吉 1. 预备知识 这里默认 ...

  9. SpringBoot1.5.10.RELEASE项目如何在tomcat容器中运行

    一. SpringBoot内嵌容器的部署方式 SpringBoot内部默认提供内嵌的tomcat容器,所以可以直接打成jar包,丢到服务器上的任何一个目录,然后在当前目录下执行java -jar de ...

  10. SpringBoot图文教程15—项目异常怎么办?「跳转404错误页面」「全局异常捕获」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1-Spr ...