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 web hosting 👉2 Sira ya Mtume Muhammad (s.a.w) 👉3 Simulizi za Hadithi Audio 👉4 Kitabu cha Afya 👉5 Madrasa kiganjani 👉6 Dua za Mitume na Manabii
Post zinazofanana:
PYHON - somo la 5: Aina za data list, turple, dictionary na boolean
Katika somo hili tunakwenda kujifunza aina nyingine za data ambazo hutumika kwenye python.
Soma Zaidi...Python somo la 29: Encaosulation kwneye python
Katika somo hili utajifunza maana ya encapsulation na sheria za uandishi wake
Soma Zaidi...Python somo la 14: Jinsi ya kutumia For loop
Katika somo hili utakwend akujifunza matumizi ya for loop kwneye python
Soma Zaidi...Python somo la 52: Kutengeneza table na kufanya Migrations Katika Django
Katika somo hili tutajifunza jinsi Django hutumia migrations kuunda na kubadilisha tables kwenye database kulingana na models tunazoandika. Tutapitia maana ya migration, hatua za kuitumia, umuhimu wake, misingi ya makemigrations na migrate, pamoja na mfano halisi kutoka kwenye project yetu ya pybongo (app: menu).
Soma Zaidi...Python somo la 62 Kupakia picha (upload) na kuisoma kutoka kwenye database
Katika somo hili utakwenda kujifunza jinsi ya kushughulika na faili, kama ku upload faili kwenye django.
Soma Zaidi...Python somo la 27: polymorphism kwneye python
Katika somo hili utajifunza maana ya polymorphism na sheria za uandishi wake
Soma Zaidi...