首页>>后端>>Python->djangofilter在哪里(2023年最新分享)

djangofilter在哪里(2023年最新分享)

时间:2023-12-09 本站 点击:0

导读:本篇文章首席CTO笔记来给大家介绍有关djangofilter在哪里的相关内容,希望对大家有所帮助,一起来看看吧。

django model的get和filter方法的区别是什么?

django的get和filter方法是django model常用到的。 为了说明它们两者的区别定义2个models class Student(models.Model): name = models.CharField('姓名', max_length=20, default='') age = models.CharField('年龄')。

区别

区别是指两个或两个以上的事物间的不同,一般是在存在共同点的情况下说有"区别",世间万物,不可能任何东西都是一样的,世上没有两片一样的叶子。当两种相似的事物作比较时,它们的不同点便是区别。

django model的get和filter方法的区别

一,get只能用于有且只有一条数据的查询,直接返回数据对象,sql如下

select * from TABLE where name='demo';如果demo有两条就报错

如果查的是主键就相当于这样select * from TABLE where id=1;

二,filter返回结果集,数据对象列表,sql类似如下:

select * from TABLE where name='demo';所有name等于demo的都查出来

可多个条件select * from TABLE where name='demo' and catid=1;

Django filter中contains 用法

用PYTHON ,DJANGO 做站,在通常的情况下,需要用到 orM 的查询方法,比如object.filter(tag__contains='keywords')....

在这种情况下,如果你跟踪 sql 语句,你会发现,SQL 语句会生成 select .... like bianry '%keywords%', 如果是这样的语句,在某些情况是下是会出问题的,也就是说查询出来的数据可能会比你预计的少。

如果你用 raw sql 查总数 select count(*) from table where like '%keywords%' 得到数量可能比你用ORM 采用上面的方式得到的数据多,问题就在于生成的条件问题。

后来查询了 django 说明,如果把ORM 语句变成:object.filter(tag__icontains='keywords').... 就好了。

注意contains ,icontains 的区别. 后来从django官网查到了说明:

django内置的filter过滤方法中,如何才能实现如下操作

data = iccontent.objects.filter(tag_id=2).order_by('id')[0]

希望能帮到你!

结语:以上就是首席CTO笔记为大家整理的关于djangofilter在哪里的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于djangofilter在哪里的相关内容别忘了在本站进行查找喔。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/20668.html