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 Dua za Mitume na Manabii 👉2 Tafasiri ya Riyadh Swalihina 👉3 Kitabu cha Afya 👉4 ai web app 👉5 web hosting 👉6 Simulizi za Hadithi Audio
Post zinazofanana:
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 seomo la 55: Kutengeneza Simple Admin Dashboard ya CRUD
Katika somo hili tutajifunza jinsi ya kuunda dashboard rahisi ndani ya Django ambayo itaruhusu mtumiaji kuongeza, kusoma, kuhariri na kufuta taarifa za MenuItem bila kutumia Django built-in admin, bali kwa kutumia HTML templates na views tulizotengeneza sisi wenyewe.
Soma Zaidi...Python somo la 22: Package kwenye Python
Hapa utakwenda kujifunz amaana ya package, aina zake na jinsi ya kuandika package.
Soma Zaidi...Python somo la 47: Jinsi ya kupokea na kuchakata fomu
Katika somo hili utakwend akujifunza jinsi ya kupokea na kuchakata fomu
Soma Zaidi...Python somo la 61: Jinsi ya kutuma email kwenye django
Katika maeneo ya development, tunahitaji kutuma email mara nyingi kwa madhumuni ya: Kujaribu mfumo wa OTP Password reset System notifications Activation codes Lakini mara nyingi hatutaki emails ziondoke kwenda kwa watu halisi wakati bado tupo kwenye majaribio.
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...