【Django-vue-admin学习笔记】数值范围搜索最大,最小值过滤
在Django-Vue-Admin中,实现数值范围搜索的过滤器可以通过Django的__gte
(大于等于)和__lte
(小于等于)查询操作符来完成。以下是一个例子,假设我们有一个模型Product
,它有一个数值字段price
:
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(max_digits=10, decimal_places=2)
在Vue组件中,我们可以通过发送一个带有最小值和最大值的请求到后端来进行搜索:
// Vue 组件中的方法,用于发送请求
methods: {
searchProducts(minPrice, maxPrice) {
this.$http.get('/api/products', {
params: {
min_price: minPrice,
max_price: maxPrice
}
}).then(response => {
// 处理响应数据
}).catch(error => {
// 处理错误
});
}
}
在Django的视图中,我们可以使用接收到的参数来过滤查询集:
from django.http import JsonResponse
from .models import Product
from django.db.models import Q
def search_products(request):
min_price = request.GET.get('min_price', 0)
max_price = request.GET.get('max_price', 999999)
products = Product.objects.filter(
Q(price__gte=min_price) & Q(price__lte=max_price)
)
# 将查询结果序列化为JSON(视项目而定,可能需要使用Django REST framework或自定义序列化过程)
data = [{'id': p.id, 'name': p.name, 'price': p.price} for p in products]
return JsonResponse(data, safe=False)
在这个例子中,我们从请求中获取最小价格和最大价格的参数,然后使用这些参数过滤出价格在指定范围内的产品。最后,我们将过滤后的查询集序列化为JSON格式的响应,以便在前端显示。
评论已关闭