python - 在 Django 中搜索几列

标签 python mysql django database web

我有一个包含几列的数据库。 我想在我的搜索中添加一个选项,不仅可以搜索像 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/

相关文章:

python - 从边缘列表读入后,Networkx 在节点名称前附加 'u'。如何摆脱?

python - Django:从表单示例保存到数据库

php - 如何在 Laravel 查询中使用 AND 运算符?

python - 无法使用 REST Framework JWT 进行身份验证

python - View 函数中将查询集类型转换为 list() 错误 - 适用于 shell

python - Celery 使用来自 python 的 -Ofair 运行 worker

python - 如何快速用字典识别列表中的重复数字

php - mySQL 语句 ORDER BY 多列

php - CakePHP 查询返回两行而不是一行

python - 检查 Django 中多对多子对象是否共享父对象