File size: 834 Bytes
b4f2238 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | """当事人查询条件构建器。"""
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
|