搜索Django中的几个colums

问题描述:

所以我得到了一个数据库与几个colums。 我想添加到我的搜索选项来搜索不仅像项目一列。我想再搜索几个colums ..所以搜索将查找Project或ServerName或IP并搜索所有colums或其中的一些。搜索Django中的几个colums

有什么想法? 我试过(Project__icontains = query,ServerName__icontains = query),但它说错了语法。

index.html-

def get(self, request): 
     form = HomeForm() 
     query = request.GET.get("q") 
     posts = serverlist.objects.all() 

     if query: 
      posts = serverlist.objects.filter(Project__icontains=query) 
     else: 
      posts = serverlist.objects.all() 
    # else: 

models.py -

from django.db import models 


class serverlist(models.Model): 
    ServerName = models.CharField(max_length = 30) 
    Owner = models.CharField(max_length = 50) 
    Project = models.CharField(max_length = 30) 
    Description = models.CharField(max_length = 255) 
    IP = models.CharField(max_length = 30) 
    ILO = models.CharField(max_length = 30) 
    Rack = models.CharField(max_length = 30) 
    Status = models.CharField(max_length = 30) 

你可以使用Q objects

从文档:

AQ对象(django.db .models.Q)是一个用于封装colle的对象关键字参数的提示。这些关键字参数在上面的“字段查找”中指定。

一个例子:

posts = serverlist.objects.filter(
    Q(Project__icontains=query)|Q(ServerName__icontains=query) 
) 
+1

完美的答案谢谢 –

+0

不客气。接受答案,如果它是有益的,请:) – efkin

+0

嗨efkin, 你有电子邮件我可以联系你吗? –