Python somo la 59: Kufanya Mahesabu (Aggregations) Katika Django
Katika somo hili tutajifunza jinsi ya kutumia Django ORM kufanya mahesabu mbalimbali kama Sum, Avg, Count, Max, Min, pamoja na kupunguza idadi ya items zinazoonekana kwenye dashboard (LIMIT). Pia tutajifunza namna ya kutengeneza “difference” kati ya thamani kubwa na ndogo bila kubadilisha functions zozote ulizokwisha ziandika.
Utangulizi
Katika kazi za mifumo, mara nyingi tunahitaji kuonyesha takwimu kama jumla ya bei, wastani, au idadi ya vitu. Django inatoa njia rahisi kupitia ORM bila kuandika SQL moja kwa moja. Somo hili litakuonyesha hatua kwa hatua jinsi ya kupata mahesabu hayo kutoka kwenye jedwali la MenuItem.
1. Kutumia Django Aggregation Functions
Django inatoa method maalumu kwa ajili ya mahesabu:
-
Sum()— kupata jumla ya data fulani -
Avg()— kupata wastani -
Count()— kuhesabu idadi -
Max()— kupata thamani kubwa -
Min()— kupata thamani ndogo
Tunaziingiza kwa:
from django.db.models import Avg, Sum, Count, Max, Min
2. Kupata Mahesabu Kutoka Kwenye Model
Mfano tukitumia model yako:
MenuItem.objects.aggregate(Sum('bei'))
Lakini matokeo huja kama dictionary:
{'bei__sum': 45000}
Kwa hiyo tunachukua thamani moja kwa moja:
jumla = MenuItem.objects.aggregate(Sum('bei'))['bei__sum']
Vivyo hivyo kwa mahesabu mengine:
wastani = MenuItem.objects.aggregate(Avg('bei'))['bei__avg']
idadi = MenuItem.objects.aggregate(Count('id'))['id__count']
bei_kubwa = MenuItem.objects.aggregate(Max('bei'))['bei__max']
bei_ndogo = MenuItem.objects.aggregate(Min('bei'))['bei__min']
3. Kutengeneza Difference (Tofauti ya Bei Kubwa – Bei Ndogo)
Kwa kuwa baadhi ya data inaweza kuwa tupu (None), tunalinda kwa kutumia or 0:
tofauti = (bei_kubwa or 0) - (bei_ndogo or 0)
4. Kuweka Limit ya Items (LIMIT kama SQL)
Kama tunataka kuonyesha item 10 tu, tunatumia slicing:
items = MenuItem.objects.all()[:10]
Hii haiathiri data wala pagination, ni limit ya kuonyesha tu.
5. Dashboard View Kamili Bila Kugusa Methods Zako Zingine
Hii ndiyo view ambayo unaweza kuitumia bila kubomoa code zako zilizopo:
def dashboard(request):
items = MenuItem.objects.all()[:10] # LIMIT 10 items
jumla = MenuItem.objects.aggregate(Sum('bei'))['bei__sum']
wastani = MenuItem.objects.aggregate(Avg('bei'))['bei__avg']
idadi = MenuItem.objects.aggregate(Count('id'))['id__count']
bei_kubwa = MenuItem.objects.aggregate(Max('bei'))['bei__max']
bei_ndogo = MenuItem.objects.aggregate(Min('bei'))...Umeionaje Makala hii.. ?
Share On:
👉1 Tafasiri ya Riyadh Swalihina 👉2 Dua za Mitume na Manabii 👉3 Madrasa kiganjani 👉4 Simulizi za Hadithi Audio 👉5 Sira ya Mtume Muhammad (s.a.w) 👉6 web hosting
Post zinazofanana:
PYTHON - somo la 8: method za namba zinazotumika kwenye python
Katika somo hili utakwenda kujifunza kuhusu number method yaani function zinazofanya kazi kwenye namba.
Soma Zaidi...Python somo la 45: Kutumia Loops na Conditions katika Django Templates
Katika somo hili utakwend akujifunza kuchakata data kwa Kutumia Loops na Conditions katika Django Templates
Soma Zaidi...Python somo la 24: Nini maana ya Object Oriented Programming
Hapa tunakwenda kujifunza kuhusu OOP ambapo ni miongoni mwa mitindo ya uandishi wa code
Soma Zaidi...PYTHON - somo la 7: Jinsi ya kubadili aina ya data
Katika soo hili utakwenda kujifunza jinsi ya kubaduli aina moja ya data kwena aina nyingine. Kwa mfano unaweza kubadili namba kuwa string ama kubadili string kuwa nanda ama kubadili float kuwa int.
Soma Zaidi...Python somo la 49: Jinsi ya ku host project ya Django
Katika somo hili utakwenda kujifunza jinsi ya ku host website ya Django. Hapa tutakwenda kutuma plaform ya pythonanywhere.com.
Soma Zaidi...Python somo la 30: Data abstraction
Katika somo hili utakwend akujifunz akuhusu nadharia ya data abstraction na kazi zake kwenye OOP
Soma Zaidi...