اذهب إلى المحتوى

السؤال

نشر

أريد حساب مجموع الأسعار في متجر إلكتروني مبني بإستخدام جانغو Django، يمكنني القيام بهذه المهمة بإستخدام SQL بالشكل التالي:

SELECT SUM(ISNULL(products.title)) FROM products;

ولكن لا أعلم كيف أستخدم SUM في جانغو Django، هل توجد طريقة لحساب مجموع أسعار المنتجات بإستخدام QuerySet؟

Recommended Posts

  • 1
نشر

يمكنك إستخدام SUM لحساب مجموع المنتجات عن طريق الكود التالي :

def total_sale(self):
    total = Sale.objects.aggregate(TOTAL = Sum('amount'))['TOTAL']
    return total

بالعلم أن " amount " يتم إستبداله بإسم النموذج التي تريد حسابه و يتم إستبدال  " Sale " بالنموذج العام الخاص بالمنتجات

هناك طريقه اخرى إضافيه في Django لحساب مجموع المنتجات حيثُ يُمكنك إستخدام F و annotate على سبيل المثال :

from django.db.models import F

tickets = Ticket.objects.all().annotate(total_price=F('total_quantity') * F('price'))

for t in tickets:
    print(t.total_price)

كما يمكنك دمج إستخدام F , SUM إذا كنت تريد حساب مجموع المنتجات المتواجده فعلياً في الـ Cart عن طريق التالي :

from django.db.models import F, Sum

def cart(request):
    cart = Cart.objects.annotate(
        price=Sum(F('orderitem__item__price') * F('orderitem__quantity'))
    ).get(
        order_user=request.user
    )
    cart.total = cart.price
    cart.save()

فهناك العديد من الطرق

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...