欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Django 模型笔记

程序员文章站 2022-03-26 14:06:09
关于模型: 1:一个模型类对应一个表,模型类中的属性对应表中的一个字段 2:字段类型(数据库支持的类型) 字符串 1:CharField(Maxlength=长度) models.CharField 2:TextFiled 大文本 3:IntegerField 整数 4:DecimalField(m ......

关于模型:

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:创建对象