Aggregate
Aggregate สร้างค่าผลลัพธ์ (สรุป) บน QuerySet ทั้งหมด ผลรวมดำเนินการบน rowset เพื่อรับค่าเดียวจาก rowset (ตัวอย่างเช่นผลรวมของราคาทั้งหมดใน rowset) Aggregate ถูกนำไปใช้กับ QuerySet ทั้งหมดและสร้างค่าผลลัพธ์ (สรุป) ใน QuerySet ทั้งหมด
ในรุ่น:
class Books(models.Model):
name = models.CharField(max_length=100)
pages = models.IntegerField()
price = models.DecimalField(max_digits=5, decimal_places=3)
ในเชลล์:
>>> Books.objects.all().aggregate(Avg('price'))
# Above code will give the Average of the price Column
>>> {'price__avg': 34.35}
คำอธิบายประกอบคำอธิบาย
ประกอบสร้างสรุปอิสระสำหรับแต่ละวัตถุใน QuerySet (เราสามารถพูดได้ว่ามันวนซ้ำแต่ละวัตถุใน QuerySet และใช้การดำเนินการ)
ในรุ่น:
class Video(models.Model):
name = models.CharField(max_length=52, verbose_name='Name')
video = models.FileField(upload_to=document_path, verbose_name='Upload
video')
created_by = models.ForeignKey(User, verbose_name='Created by',
related_name="create_%(class)s")
user_likes = models.ManyToManyField(UserProfile, null=True,
blank=True, help_text='User can like once',
verbose_name='Like by')
ในมุมมอง:
videos = Video.objects.values('id', 'name','video').annotate(Count('user_likes',distinct=True)
ในการดูจะนับจำนวนไลค์สำหรับแต่ละวิดีโอ
.annotate()
qs เพียงอย่างเดียวไม่ได้กด db แต่การโทรq[0].num_authors
ทำหรือไม่ ฉันถือว่าaggregate
ต้องตี db เสมอเนื่องจากเป็น Terminal clause?