我想在django中实现搜索。我没有使用太阳能等任何搜索技术。我使用django的简单过滤查询。
现在问题是这样的:
我有一个模型 Product
五个字段name
,cost
,brand
,expiry_date
,weight
我想在所有领域实现高级搜索功能,
由:
name = request.GET.get('name')
我得到一个值,我在哪个基础上搜索所有产品。
我想要的是,当 name = None
时,它必须搜索所有名称。
问题是这样的:如果用户方没有提供价值,我该如何搜索所有名称?
答案 0 :(得分:1)
您没有显示搜索查询。但是,我认为使用contains
(或icontains
进行不区分大小写的匹配)将帮助您解决问题,并且能够搜索包含匹配文本的首字母,姓氏和名称
你会这样做:
name = request.GET.get('name', '')
search_result = Product.objects.filter(name__icontains=name)
请注意,已指示get
方法返回''
而非默认None
。请记住,Python中的所有字符串都包含空字符串''
。因此,当name
未发送request
时,将返回数据库中的每个Product
(不具有 NULL 名称),因为它们的名称都包含空字符串''
。
答案 1 :(得分:0)
如果您想要名称为None,则必须在Product Model中搜索所有名称 试试这个逻辑
var json = [
{ 'red': '#f00' },
{ 'green': '#0f0' },
{ 'blue': '#00f' }
];
$.each(json, function () {
$.each(this, function (name, value) {
console.log(name + '=' + value);
});
});
答案 2 :(得分:0)
试试这个:
result = Product.objects.all()
name = request.GET.get('name', None)
if name:
result = result.objects.filter(name__icontains=name)