From b01b234a80695840e8141a0766f15557ac8ccfd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Thu, 3 Sep 2020 23:06:57 +0800 Subject: [PATCH] Added to search the amount and primary key in the accounting application. --- accounting/views.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/accounting/views.py b/accounting/views.py index 4105a8d..2bce001 100644 --- a/accounting/views.py +++ b/accounting/views.py @@ -20,6 +20,7 @@ """ import json import re +from decimal import Decimal from typing import Dict, Optional from django.conf import settings @@ -768,13 +769,20 @@ def search(request: HttpRequest) -> HttpResponse: if query is None: records = [] else: - records = Record.objects.filter( + conditions =\ Q(account__in=Account.objects.filter( Q(title_l10n__icontains=query) | Q(l10n_set__value__icontains=query) - | Q(code=query))) - | Q(summary__icontains=query) - | Q(transaction__notes__icontains=query)) + | Q(code=query)))\ + | Q(summary__icontains=query)\ + | Q(transaction__notes__icontains=query) + if re.match("^[0-9]+(?:\\.[0-9]+)$", query): + conditions = conditions | Q(amount=Decimal(query)) + if re.match("^[0-9]+$", query): + conditions = conditions\ + | Q(pk=int(query))\ + | Q(transaction__pk=int(query)) + records = Record.objects.filter(conditions) try: pagination = Pagination(request, records, True) except PaginationException as e: