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 Bongolite - Game zone - Play free game 👉3 web hosting 👉4 Dua za Mitume na Manabii 👉5 kitabu cha Simulizi 👉6 Tafasiri ya Riyadh Swalihina
Post zinazofanana:
Python somo la 39: Jinsi ya Kuongeza Kurasa Nyingine Katika Django View
Katika somo hili utakwenda kujifunza zaidi kuhusu Jinsi ya Kuongeza Kurasa Nyingine Katika Django View
Soma Zaidi...Python somo la 28: inheritance kwenye OOP
Katika somo hili utakwenda kujifunz amaana ya inheritance na sheria za kuiandika inheritance.
Soma Zaidi...Python somo la 34: Kutumia html kwneye python
Katika somo hili utakwend akujifunz ajinsi ya kutumia html kwneye python
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 33: Jinsi ya kupata taarifa za faili
Katika somo hili utakwend akujifunz anamna ya kuwez akupata taarifa zinazohusu faili
Soma Zaidi...Python somo la 35: Jinsi ya kutumia MYSQL kwenye python
Katika somo hili utajifunz akutumia database kwenye python
Soma Zaidi...