首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索功能

搜索功能
EN

Stack Overflow用户
提问于 2022-01-01 08:25:05
回答 1查看 51关注 0票数 1

django,这个搜索功能正在工作,但是数据没有显示在模板上。我是django的初学者。请帮帮我

view.py:

代码语言:javascript
复制
def search(request):
    search_machinename = request.GET.get('q')
    if (search_machinename is not None) and search_machinename:
        machinename = Item.objects.filter(QuerySet(machinename__icontains=search_machinename) | 
        QuerySet(operationno__icontains=search_machinename))
        if not machinename:
            machinename = Item.objects.all()

    context = {'machinename': machinename}

    return render(request, 'usermaster/item-form.html', context)

模板文件: item-form.html:此模板的网页

代码语言:javascript
复制
<form action="{{url.search}}" method='get' value='{{ request.get.q }}' enctype="multipart/form-data">
    {% csrf_token %}
    {{fields}}

    <input type="text" name="q" value='{{ request.GET.q }}'>
    <button type="submit">Search</button>
    <table>
        {% for data in machinename %}
        <tr>
            <td>{{ data.machine_name }}</td>
            <td>{{ data.operation_no }}</td>
        </tr>
        {% endfor %}
    </table>
</form>

代码正在工作,但它不在网页上显示。

EN

回答 1

Stack Overflow用户

发布于 2022-01-01 09:00:05

您在Queryset或Q中拼错了模型字段名、operationno__icontainsmachinename__icontains

像这样改变它们:

代码语言:javascript
复制
# views.py
from django.shortcuts import render
from .models import Item
from django.db.models import Q

def search(request):
    search_machine_name = request.GET.get('q')
    context = {}
    if (search_machine_name is not None) and search_machine_name:
        machine_name = Item.objects.filter(Q(machine_name__icontains=search_machine_name) | 
        Q(operation_no__icontains=search_machine_name))
        if not machine_name:
            machine_name = Item.objects.all()

        context['machine_name'] = machine_name

    return render(request, 'usermaster/item-form.html', context)
代码语言:javascript
复制
# templates/usermaster/item-form.html
<form action="{{url.search}}" method='get' value='{{ request.get.q }}' enctype="multipart/form-data">
    {% csrf_token %}
    {{fields}}

    <input type="text" name="q" value='{{ request.GET.q }}'>
    <button type="submit">Search</button>
    <table>
        {% for data in machine_name %}
        <tr>
            <td>{{ data.machine_name }}</td>
            <td>{{ data.operation_no }}</td>
        </tr>
        {% endfor %}
    </table>
</form>
代码语言:javascript
复制
# models.py
from django.db import models

class Item(models.Model):
    machine_name = models.CharField(max_length= 200)
    operation_no = models.IntegerField()
    def __str__(self): 
        return self.machine_name
代码语言:javascript
复制
# Project urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include(('<your_app_name>.urls', 'url'), namespace='url')),
]
代码语言:javascript
复制
# your app urls.py
from .views import search
from django.urls import path

urlpatterns = [
    path('search', search, name='search')
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70547701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档