导读:本篇文章首席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在哪里的相关内容别忘了在本站进行查找喔。