【问题标题】:Searching a few columns in Django在 Django 中搜索几列
【发布时间】:2018-03-27 02:17:45
【问题描述】:

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

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)

【问题讨论】:

    标签: python mysql django database web


    【解决方案1】:

    你可以使用Q objects

    来自文档:

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

    一个例子:

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

    【讨论】:

    • 不客气。如果有帮助请采纳答案:)
    • 嗨 efkin,你有我可以联系你的电子邮件吗?
    • 嗨 efkin,我的 django 中还有很多问题。你能检查一下,我会给你打勾吗?
    猜你喜欢
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    相关资源
    最近更新 更多