我有 3 个表 PC(ID, PcNAME, Brand) , CellPhoness(ID, CellPhoneName, Brand) , Printers(ID, PrinterName, Brand) 。 3张表之间没有关系。我想在用户可以输入搜索字符串的位置运行查询,程序将搜索 3 个模型以查找数据所在的位置,并以 JSON 响应的形式返回相同的 Id、名称和品牌。

最佳答案

你可以这样做:

  • 从查询参数中获取查询文本
  • 基于它的过滤器
  • 返回序列化器数据
    def view(request):
        query = request.GET.get("query", None)
        pcs = PC.objects.all()
        cell_phones = CellPhone.objects.all()
        printers = Printer.objects.all()
    
        if query:
            pcs = pcs.filter(name__icontains=query)
            cell_phones = cell_phones.filter(name__icontains=query)
            printers = printers.filter(name__icontains=query)
    
        return JsonResponse("pcs": PCSerializer(instances=pcs, many=True).data,
                            "cell_phones": CellPhoneSerializer(instances=cell_phones, many=True).data,
                            "printers": PrinterSerializer(instances=printers, many=True).data)
    

  • 您需要为每个对象创建序列化程序,请查看此 https://www.django-rest-framework.org/api-guide/serializers/

    10-08 00:41