django模型使用

以前写过一篇django的模型关系,今天腾出时间把上篇的兄弟篇补上,来学习下django orm, 利用django的模型能够很方便的对数据库进行操做,以前开发人员是必需要具有必定sql基础的,但若是有些开发人员就是不想了解sql呢,在以前,不懂那是万万不行的,但自从有了orm,开发人员就能够在不懂sql的状况下也能完成对数据库的增删改查操做,今天咱们就来看看如何实现这些基本的需求,开始前咱们先定义一个模型,在models.py文件里写入:sql


class Info(models.Model):数据库

    name = models.CharField(max_length=100)django

    age = models.IntegerField(default=0)app

    email = models.EmailField()ide

有了这个模型,咱们就来看最基本的对数据操做实现方法,学习

一、查:spa

首先若是要获取全部信息,能够用all,代码以下:orm

all_per=Info.objects.all()     #至关于select * from Info对象

若是要获取单个对象可用:ci

Info.objects.get(name=’john’)

如何要过滤返回的信息,例如要查询名字是john的,能够用filter:

Info.objects.filter(name=’john’)     #至关于select * from Info where name=’jhon’

条件组合查询也是支持的,例如项目等于john,邮件是john@gmail.com的

Info.objects.filter(name=’john’, mail=’john@gamil.com’)

模糊查询,虽然这个不到万不得已不用,有时候仍是有可能用到的,例如查询名字里包含john的,

INfo.objects.filter(name__contains=’john’)   #至关于select * from Info where name LIKE ‘%john%’

固然若是你查询的某些数据不想要,能够用exclude,例如查询全部名字是john的,但email不是test@gmail.com的:

Info.objects.filter(name=’john’).exclude(email=’test@gmail.com’)

最后查完的数据若是想排个序,好比按年龄,能够这样:

Info.objects.all().order_by(‘age’),若是反向查下能够在age前面加一个-(减号)便可。

若是只想看前10我的呢,能够用切片,很是灵活,以下:

Info.objects.all().order_by(‘age’)[:10]

以上就是比较经常使用的查询对数据的操做了,基本知足咱们对数据查询的需求,接下来咱们说增长。

二、增

若是要添加一个用户,只须要获取用户的信息,通常是来自前台表单,实例化模型,而后调用save保存便可,例如:

person = Info(name=’john’,age=20, email=’john@gmail.com’)

person.save()

这二步就完成了数据的保存。

三、改

若是数据库中某我的邮箱写错了,能够先查出来,而后作更新:

p = Info.objects.get(name=’john’)

p.email=’test@gmail.com’

p.save()

这样就修改了这条记录,若是想对多条进行修改能够本身加条件过滤后修改,例如把全部条目的email所有修改为abc@gmail.com,固然这个例子有点扯,只是为说明用法:

Info.object.all().update(email=’abc@gmail.com’)

四、删除

最后咱们说删除,用模型来操做很是简单,基本步骤是先查出你要删的对象,而后执行delete()便可,例如要删除名字是john的记录,能够这样:

p = Info.objects.filter(name=’john’)

p.delete()

这样就删除了,固然这是对1条记录的操做,删除整个表的方法我就不写了,有兴趣本身去查查吧

这篇就到这里,我我的感觉是用orm来操做数据库仍是很是方便的,整个代码中也没必要写任何的sql语句,固然这种orm也并不能覆盖全部的操做,有的地方仍是不得不写sql来完成,因此django也支持原生的sql语句,感兴趣的能够去看下官方文档。

相关文章
相关标签/搜索