`
m4774411wang
  • 浏览: 109044 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

django get 和filter

阅读更多

django的get和filter方法是django model常用到的,搞清楚两者的区别非常重要。

为了说明它们两者的区别定义2个models

class Student(models.Model):
name = models.CharField('姓名', max_length=20, default='')
age = models.CharField('年龄', max_length=20, default='')


class Book(models.Model):
student = models.ForeignKey(Student)


一.先说下django的get方法:

1django的get方法是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错。
比如我数据库里有一条记录,记录的name的值是老王python的话,我用student = Student.objects.get(name='老王python'),
返回的是一个记录对象,你可以通过student.__dict__来查看,它返回的是一个字典的形式,{'key':valeus},key是字段的名称,而values是值的内容。
而如果我用get方法来查询一个数据库里不存在的记录,程序会报错。
比如:student = Student.objects.get(name='老王'),你自己可以运行看下。

2如果你用django的get去取得关联表的数据的话,而关键表的数据如果多于2条的话也会报错。
比如我的student表里有一个记录:
id name age
1 python 24

book表:

id student_id
1 1
2 1

我用
student = Student.objects.get(name='python')
book = Book.objects.get(student)
它也会报错,因为book表有2条记录和student表相匹配。


二.再说下django filter:

1django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。
比如我数据库里有一条记录,记录的name的值是老王python的话,我用student = Student.objects.filter(name='老王python')
它返回的student是一个对象的列表,可以看的出来student[0]和上面的get方式返回的student的结果是一样的。

2如果你用django的get去取得关联表的数据的话,无论关联表有多少记录的都不会报错。


另外我从别的资料里看到filter好像有缓存数据的功能,第一次查询数据库并生成缓存,下次再调用filter方法的话,直接取得缓存的数据,会get方法每次执行都是直接查询数据库的,不知道这个是不是正确。

这是我用了一段时间django的一点心得体会,希望对大家了解django get和filter有帮助!

作者:老王@python python 教程
老王python,提供pythn相关的python教程和python 下载,希望大家能够喜欢

1
1
分享到:
评论

相关推荐

    浅谈django model的get和filter方法的区别(必看篇)

    下面小编就为大家带来一篇浅谈django model的get和filter方法的区别(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    在django中查询获取数据,get, filter,all(),values()操作

    django 中当我们要查询获取数据时: 数据库中的信息: 如一个学生信息表 students: get方法: students.objects().get(a = b) 其中a为students表中的一个属性如id,name 等 如:students.objects().get(name = ...

    在Django中自定义filter并在template中的使用详解

    接下来让我们从自定义一个get_range(value)来产生列表的filter开始吧。 首先在你的django app的models.py的同级目录建立一个templatetags的文件夹,并在里面新建一个init.py的空文件,这个文件确保了这个文件夹被...

    Django Rest Framework分页过滤排序代码示例

    8、DRF实战总结:分页(Pagination)及DRF提供的分页类详解(附源码) 9、DRF实战总结:过滤(filter)与排序,以及第三方库django-filter的使用(附...过滤:get_queryset、django-filter。 排序:DRF的OrderingFilter。

    Django跳坑:objects.all()、objects.get()与objects.filter()之间的区别

    文章目录1、三者之间的区别2、获取数据2.1、取单个数据3、序列化3.1、...all、filter和get得到的数据返回类型是不一样的 all、filter返回数据类型是QuerySet、get返回数据类型是models 2、获取数据 models类型:.val

    Django中ORM找出内容不为空的数据实例

    def get(self, request): userObj = models.Asset.objects.filter(~Q(asset_id = '') return HttpResponse('yes') 上面代码中的models.Asset.objects.filter(~Q(nick = ”)则是使用Q函数去找出nick不为空的数据,...

    Django objects.all()、objects.get()与objects.filter()之间的区别介绍

    本文主要介绍的是关于Django objects.all()、objects.get()与objects.filter()直接区别的相关内容,文中介绍的非常详细,需要的朋友们下面来一起看看详细的介绍: 示例代码 ret=UserInfo.objects.all() all返回的是...

    django-zeropush:ZeroPush 推送通知支持 django 支持的 Android 或 iOS 应用程序

    django 1.5+ 自定义用户模型)示例代码向用户发送通知 import zeropush# Get a user. Can also be a custom user model in django 1.5+the_user = User . objects . filter ( username = "johndoe" )zeropush . ...

    Django-Day04.pdf

    在 Django 中,模型关联关系是指数据表之间的依赖和影响关系。在一个项目中,我们经常需要建立不同的模型之间的关联关系,以便更好地管理和查询数据。下面,我们将详细介绍 Django 中的关联关系类型、模型关联关系的...

    django-misc:Django-misc - 为 django 提供不同有用内容的模块。 在这里你会发现

    Django misc是包含一组实用程序、装饰器、模板标签的模块,每个人在项目中至少使用一次。 所以在这里它们都在一个应用程序中,...一些有用的模板标签,如 set、filter、get 等 一些额外的实用程序 Bbcode 模板标签 为社

    django-model-values:将O移出ORM

    目标是为使用Django ORM的最佳实践提供优雅的语法支持。 特别要避免与始终使用物体有关的效率低下和竞争状态。用法典型的模型用法是冗长,低效和不正确的。 book = Book . objects . get ( pk = pk )book . rating ...

    Django之编辑时根据条件跳转回原页面的方法

    在要跳转的编辑页面: ...params['_list_filter'] = curr_url #处理url: return mark_safe('编辑</a>' % (self.get_change_url(obj.id), params.urlencode())) 在处理url的视图中: #获取url参数: query_

    qrest:它有助于格式化Django Rest框架的查询字符串

    它有助于格式化django rest框架的查询字符串。 安装 npm i qrest --save 与axios一起使用 axios . get ( '/documents/' , { params : { ... qrest . filter . contains ( 'document_number' , '123456' ) , ......

    Django中提示消息messages的设置方式

    from django.contrib import messages 2. 把messages写入view中 @csrf_exempt def search(request): if request.method == 'GET': bookname = request.GET.get('bookname') bookinfo = Book.objects.filter...

    django rest framework 过滤时间操作

    通常我们会用到过滤两个时间段内的一些数据, 当我们用django rest framework的时候, 他可以根据字段filter_fields进行过滤, 但是对于日期来说并不起作用, 这个时候就需要我们设置重写queryset方法进行捕捉了 ...

    解决django-xadmin列表页filter关联对象搜索问题

    环境:xadmin-for-python3 python3.5.2 django1.9.12 问题描述:Product ProductSku两个实体,ProductSku FK外键关联Product ,Product 列表页的filter不支持productsku__sku_code的搜索,主要页面加载时报Product ...

Global site tag (gtag.js) - Google Analytics