坚持在django实施搜索

时间:2016-10-09 05:59:42

标签: python django

我想在django中实现搜索。我没有使用太阳能等任何搜索技术。我使用django的简单过滤查询。 现在问题是这样的: 我有一个模型 Product 五个字段namecostbrandexpiry_dateweight 我想在所有领域实现高级搜索功能, 由:

name = request.GET.get('name')

我得到一个值,我在哪个基础上搜索所有产品。 我想要的是,当 name = None 时,它必须搜索所有名称。 问题是这样的:如果用户方没有提供价值,我该如何搜索所有名称?

3 个答案:

答案 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)