关于模型:

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")

最新文章

  1. 关于AlertDialog.Builder(Context context)中所应传入的context
  2. 再谈使用Emit把Datatable转换为对象集合(List<T>)
  3. Liferay7 BPM门户开发之40: Form表单的Action到Render的数据传递
  4. js正则中的贪婪和非贪婪模式问题总结
  5. 一次插入多条记录 [mysql]
  6. codeforces 715B:Complete The Graph
  7. JavaScrip操作Cookie
  8. BeanUtils 学习教程
  9. COCOS2D-X学习笔记(一)-----Node类的学习
  10. Android应用性能优化笔记(java代码优化)
  11. SQL 如何表示引号
  12. Spring集成Hessian
  13. MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法 -摘自网络
  14. 利用jackson-databind,复杂对象对象和json数据互转
  15. 201521123056 《Java程序设计》第5周学习总结
  16. vue定义全局变量
  17. [Python] 02 - String
  18. SVN回退版本
  19. 建立自己的Servlet--成功
  20. 2018.08.20 bzoj1143: [CTSC2008]祭祀river(最长反链)

热门文章

  1. SpringBoot之SpringApplication
  2. JavaScript 核心学习——继承
  3. 用java实现的微信公众号爬虫
  4. AndroidStudio实现AIDL
  5. LeetCode~移除元素(简单)
  6. C++走向远洋——40(第九周,深复制体验)
  7. Jstorm执行task报错windows CONFIG SET protected-mode no
  8. IIS6.0文件解析漏洞和短文件名漏洞复现
  9. Java避坑宝典《Java业务开发常见错误100例》上线了
  10. go结构体继承组合和匿名字段