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 Kitau cha Fiqh 👉2 Madrasa kiganjani 👉3 kitabu cha Simulizi 👉4 Tafasiri ya Riyadh Swalihina 👉5 Sira ya Mtume Muhammad (s.a.w) 👉6 Dua za Mitume na Manabii
Post zinazofanana:
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 22: Package kwenye Python
Hapa utakwenda kujifunz amaana ya package, aina zake na jinsi ya kuandika package.
Soma Zaidi...Python somo la 38: Kubadilisha landing page ya Django Framework
Katika somo hili utakwenda kujifunza jinsi ya kubadili ukurasa wa landing page wa Django na kuweka ukurasa tunaoutaka sisi.
Soma Zaidi...PYTHON somo la 11: Matumizi ya comperison eperator katika python
Katika somo hili utakwenda kujifunza kuhusu operator. Hasa hapa tutakwend akujifunz akuhusu comparison operaor.
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 26: Sheria za uandishi wa object
Katika somo hili utakwend akujifunza maana ya object, na sheria za kuandika object.
Soma Zaidi...