Junior — Middle
112
Django-да жүзеге асырған ең күрделі дерекқор сұрауы қандай?
AI-дан жауап
sobes.tech AI
Django-да ең күрделі сұраулардың бірі жиі бірнеше кестелерді біріктіруді, сүзгіден өткізу, жинақтау және аннотацияларды талап етеді.
Мысалы, соңғы айда белсенді тапсырыстары бар пайдаланушылардың тізімін алу үшін сұрау, онда тапсырыстар статусы бойынша топтастырылып, саны бойынша сұрыпталады:
from django.db.models import Count, Q
from django.utils.timezone import now
from datetime import timedelta
one_month_ago = now() - timedelta(days=30)
users = User.objects.annotate(
active_orders_count=Count('orders', filter=Q(orders__status='active', orders__created_at__gte=one_month_ago))
).filter(active_orders_count__gt=0).order_by('-active_orders_count')
Мұндай сұрау келесі элементтерді біріктіреді:
- Байланысқан объектілерді сүзгілеу (
orders__status='active') - Аннотациялар мен агрегаттық функцияларды пайдалану (
Count) - Күні бойынша сүзгілеу
- Есептелген өрі бойынша сұрыптау
Көбірек күрделі жағдайларда Subquery, Prefetch немесе тіпті RawSQL пайдалану керек, олар сұрауларды оңтайландыру және жүзеге асыру үшін.