Mohssen A Mohssen نشر 26 يناير 2022 أرسل تقرير نشر 26 يناير 2022 أستخدم transaction model في مشروع جانغو لأعرف كل الأحداث التي تحدث على الخادم: class Transaction(models.Model): author = models.ForeignKey(User, related_name="author") articles = models.ForeignKey(User, related_name="articles", null=True, blank=True) action_id = models.IntegerField() # ... أحاول أن أحصل على أعلى 5 كُتاب من خلال النموذج السابق، أي ما يساوي الإستعلام التالي في SQL: SELECT author, COUNT(*) as total FROM Transaction GROUP BY author ORDER BY total DESC كيف أقوم بهذا الأمر في جانغو Django؟ 1 اقتباس
1 مسعود زاهي نشر 26 يناير 2022 أرسل تقرير نشر 26 يناير 2022 للحصول على أعلى 5 كُتاب من خلال نموذج Transaction ما عليك إلا استعمال: from django.db.models import Count#نقوم باستيراد النموذج Count Transaction.objects.values('author') .annotate(total=Count('author')) .order_by('-total')[:5] الشرح: نستخدم عادة values لحصر الأعمدة التي يتم إرجاعها في مجموعة النتائج، في مثالنا قمنا فقط باسترجاع العمود author. لإضافة عمود آخر للكائن الموجود في الQuerySet نقوم باستعمال annotate. في مثالنا قمنا بإضافة Count('author') وسميناه total. بعدها قمنا بترتيب ال QuerySet من الأكبر إلى الأصغر باستخدام order_by('-total'). للحصول على أعلى 5 كتاب فقط ماعلينا الا استخدام [:5]. 2 اقتباس
السؤال
Mohssen A Mohssen
أستخدم transaction model في مشروع جانغو لأعرف كل الأحداث التي تحدث على الخادم:
أحاول أن أحصل على أعلى 5 كُتاب من خلال النموذج السابق، أي ما يساوي الإستعلام التالي في SQL:
كيف أقوم بهذا الأمر في جانغو Django؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.