8288分类目录 8288分类目录 8288分类目录
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

django模型使用

来源:本站原创 浏览:81次 时间:2022-08-31

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


class Info(models.Model):

    name = models.CharField(max_length=100)

    age = models.IntegerField(default=0)

    email = models.EmailField()

有了这个模型,我们就来看最基本的对数据操作实现方法,

1、查:

首先如果要获取所有信息,可以用all,代码如下:

all_per=Info.objects.all()     #相当于select * from Info

如果要获取单个对象可用:

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]

以上就是比较常用的查询对数据的操作了,基本满足我们对数据查询的需求,接下来我们说增加。

2、增

如果要添加一个用户,只需要获取用户的信息,一般是来自前台表单,实例化模型,然后调用save保存即可,例如:

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

person.save()

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

3、改

如果数据库中某个人邮箱写错了,可以先查出来,然后做更新:

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

4、删除

最后我们说删除,用模型来操作非常简单,基本步骤是先查出你要删的对象,然后执行delete()即可,例如要删除名字是john的记录,可以这样:

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

p.delete()

这样就删除了,当然这是对1条记录的操作,删除整个表的方法我就不写了,有兴趣自己去查查吧

这篇就到这里,我个人感受是用orm来操作数据库还是非常方便的,整个代码中也不必写任何的sql语句,当然这种orm也并不能覆盖所有的操作,有的地方还是不得不写sql来完成,所以django也支持原生的sql语句,感兴趣的可以去看下官方文档。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net