网络编程
位置:首页>> 网络编程>> Python编程>> 在django中查询获取数据,get, filter,all(),values()操作

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

作者:百奎先生  发布时间:2023-09-04 16:10:27 

标签:django,get,filter,all,values

django 中当我们要查询获取数据时:

数据库中的信息:

如一个学生信息表 students:

get方法:

students.objects().get(a = b)

其中a为students表中的一个属性如id,name 等

如:students.objects().get(name = ‘张三') 即获取name为张三的学生的信息

filter 用法与get相同

但是get必须只能取一个数据

filter 能去0,1,多个数据

即上述中如果表中有多个学生都叫张三同名了,get就会报错

同样表中没有叫张三的学生也会报错

filter则不报错,所以在要精准查询时用get

students.objects().all() 是获取表中所有的数据

values(a)属性可以加在上述三个的末尾,表示只获取a属性:

students.objects().all().values('name')即获取到所有的表中的姓名,返回一个字典组成的列表[{‘name':‘张三'},{‘name':‘李四'},。。。]

students.objects().filter(name = ‘张三').values('id'), 只返回名为张三的学生的id,不返回其他属性了。

补充知识:django filter过滤器实现显示某个类型指定字段不同值

1,前端样式

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

2,html代码

{% load asset_filter %}



<div class="col-sm-2">
 <select class="input-sm form-control select2 inline" name="ServiceModel">
   <option value="">模块</option>
   {% for i in 'Ecs'|ecs_model_field_distinct:'ServiceModel' %}
     {% if i.0 %}
       <option value="{{ i.0 }}">{{ i.0 }}</option>
     {% endif %}
   {% endfor %}
 </select>
</div>

3,后端代码

asset_filter.py 内容如下:


@register.filter(name='ecs_model_field_distinct')
def ecs_model_field_distinct(model_name, field_name):
 '''
 获取model_name模块对象的某个属性field_name的distinct值,返回值的数组
 :param model_name:
 :param field_name:
 :return:
 '''
 asset_app = apps.get_app_config('rule')
 return asset_app.get_model(model_name).objects.all().values_list(field_name).distinct()

来源:https://blog.csdn.net/qq_38775473/article/details/84886690

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com