fc / apps /client /services /client_query_builder.py
jun2024's picture
Upload 2241 files
b4f2238 verified
Raw History Blame Contribute Delete
834 Bytes
"""当事人查询条件构建器。"""
from django.db.models import Q, QuerySet
from apps.client.models import Client
class ClientQueryBuilder:
def build_queryset(
self,
*,
client_type: str | None = None,
is_our_client: bool | None = None,
search: str | None = None,
) -> QuerySet[Client, Client]:
queryset = Client.objects.prefetch_related("identity_docs").order_by("-id")
if client_type:
queryset = queryset.filter(client_type=client_type)
if is_our_client is not None:
queryset = queryset.filter(is_our_client=is_our_client)
if search:
queryset = queryset.filter(
Q(name__icontains=search) | Q(phone__icontains=search) | Q(id_number__icontains=search)
)
return queryset