Menggunakan Annotate di Django
Misal ada 2 model, dengan model relasi One-to-Many, Post dan Image. Satu Post punya banyak Image. Bagaimana kita dapat menghitung jumlah image di masing-masing post? Menggunakan annotate kita dapat melakukan query ini dengan satu langkah mudah.
Berikut ini gambaran models.py
Contoh query:
Filter semua Post yang memiliki image saja
Berikut ini gambaran models.py
from django.db import models class Post(models.Model): title = models.CharField(max_length=255) class Image(models.Model): post_image = models.ForeignKey(Post) image = models.ImageField(upload_to='assets/')
Contoh query:
>>> from django.db.models import Count >>> Post.objects.annotate(Count('image'))
Filter semua Post yang memiliki image saja
>>> Post.objects.annotate(num_images=Count('image')).filter(num_images__gt=0)
Semisal saya ada nilai1, nilai2 dan nilai3 pada baris data yang sama, untuk menghitung rata-rata dari data tersebut caranya bagaimana ya?
ReplyDelete