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
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)

Comments

  1. Semisal saya ada nilai1, nilai2 dan nilai3 pada baris data yang sama, untuk menghitung rata-rata dari data tersebut caranya bagaimana ya?

    ReplyDelete

Post a Comment

Popular posts from this blog

Adding Image Alternate Text into WordPress Image Attachment using python-wordpress-xmlrpc Library

Keutamaan Tidur yang Sedikit Menurut para Ulama

Kisah Nabi Uzair a.s.