繁体   English   中英

我如何在 django 中搜索多个值,例如(werkstoffbezeichnung 和 werkstoffnummer)

[英]how can i search in django for multiple values like the ( werkstoffbezeichnung and the werkstoffnummer )

我制作的这条鳕鱼只适用于一个值,当我尝试添加另一个值时它停止工作。 我该如何解决?

def search_post(request):
    if request.method == "POST":
        searched = request.POST.get('searched')
        posts = Post.objects.filter(werkstoffnummer=searched)
        posts = Post.objects.filter(werkstoffbezeichnung=searched)
        
        
        
        return render(request, 'Blog/search_post.html', {'searched': searched, 'posts': posts})
    else:
        return render(request, 'Blog/search_post.html', {})

通过这种方式搜索, posts将设置为您定义的最后一个QuerySet

您可以使用Q对象来创建一个搜索两个字段的QuerySet

from django.db.models import Q

def search_post(request):
    if request.method == 'POST':
        searched = request.POST.get('searched')
        posts = Post.objects.filter(
            Q(werkstoffnummer=searched) | Q(werkstoffbezeichnung=searched)
        )
        return render(request, 'Blog/search_post.html', {'searched': searched, 'posts': posts})
    else:
        return render(request, 'Blog/search_post.html', {})

这种行为的原因是posts在调用posts = Post.objects.filter(werkstoffbezeichnung=searched)中被覆盖,因此您只看到 1 个结果。 这是一种方法:

def search_post(request):
    if request.method == "POST":
        searched = request.POST.get('searched')
        posts = Post.objects.filter(werkstoffnummer=searched) | Post.objects.filter(werkstoffbezeichnung=searched)
   
        return render(request, 'Blog/search_post.html', {'searched': searched, 'posts': posts})
    else:
        return render(request, 'Blog/search_post.html', {})

您可以参考this了解更多详情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM