我有一个包含几列的数据库。 我想在我的搜索中添加一个选项,不仅可以搜索像 Project 这样的一列。我也想搜索更多的列..所以搜索将查找 Project 或 ServerName 或 IP 并搜索所有列或其中的一些列。
我试过 (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:
模型.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
来自文档:
A Q object (django.db.models.Q) is an object used to encapsulate a collection of keyword arguments. These keyword arguments are specified as in “Field lookups” above.
一个例子:
posts = serverlist.objects.filter(
Q(Project__icontains=query)|Q(ServerName__icontains=query)
)
关于python - 在 Django 中搜索几列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46755423/