У меня есть 3 стола
PC(ID, PcNAME, Brand)
CellPhoness(ID, CellPhoneName, Brand)
Printers(ID, PrinterName, Brand)
.Между тремя таблицами нет никакой связи. Я хотел бы запустить запрос, в котором пользователь может ввести строку поиска, и программа будет искать 3 модели, в которых существуют данные, и возвращать то же самое с идентификатором, именем и брендом в форме ответа JSON.
@MohammadUmair Я пробовал этот def searchquery(self,data): pc = PC.objects.filter('PcName'=data).values('ID', 'PcName', Brand) cellphone = CellPhone.objects.filter('CellPhoneName'=data).values('ID', 'CellPhoneName', Brand) printer = Printer.objects.filter('PrinterName'=data).values('ID', 'PrinterName', Brand) if pc: return pc if cellphone: return cellphone if printer: return printer else: return Respone ("error no data found")
, но, похоже, я не получаю данных, найденных ни для одного введенного элемента, я думаю, что я застрял в синтаксисе больше, чем в логике. Я новичок в этом.
@Edgar, спасибо за редактирование.
Вы можете сделать что-то вроде этого:
Получить текст запроса из параметров запроса
Фильтр на его основе
Вернуть данные сериализатора
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})
Вам нужно будет создать сериализаторы для каждого объекта, пожалуйста, посмотрите эта документация.
Спасибо за быстрый ответ и ресурс, мы его протестируем и скоро свяжемся с вами! :)
Что вы пробовали до сих пор? Вы где-то застряли?