Django : Query One-to-Many dan Many-to-One

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Django : Query One-to-Many dan Many-to-One

Pada artikel sebelumnya kita telah membahas


Django memiliki ORM yang dikenal dengan nama Django models. Dengan memanfaatkan ORM kamu sudah tidak perlu lagi merubah query SQL saat terjadi perubahan database misal dari mysql ke postgree.

Django models telah mendesain struktur data yang mendukung multi database. Setiap perubahan dan penambahan kolom atau table baru telah di atur sedemikian rupa oleh ORM, hal ini membantu developer memaksimalkan waktu development.

Pada artikel kali ini kita akan membahas tentang Query Django models. Perhatikan class models berikut ini

from django.db import models

# Create your models here.
class Province(models.Model):
code = models.IntegerField()
name = models.CharField(max_length=255, blank=True)

def __str__(self):
return self.name

class City(models.Model):
code = models.IntegerField()
name = models.CharField(max_length=255, blank=True)
province = models.ForeignKey(Province, related_name='city',on_delete=models.PROTECT)

def __str__(self):
return self.name

class Publication(models.Model):
title = models.CharField(max_length=30)

class Meta:
ordering = ('title',)

def __str__(self):
return self.title

class Article(models.Model):
headline = models.CharField(max_length=100)
publications = models.ManyToManyField(Publication,related_name='publication_details')

class Meta:
ordering = ('headline',)

def __str__(self):
return self.headline

1) One to Many

from utils.models import Province, City

def get_province():
p = Province.objects.get(id=33)
c = City.objects.filter(province=p.id)
print(c)

2) Many to One

from utils.models import Province, City

def get_city_by_province():
c = City.objects.filter(province__id=33)
print(c)

3) Many to Many

from utils.models import Province, City, Article, Publication

def get_article():
p = Publication.objects.all()
for n in p.publication_details.all():
print(n)

Baca artikel lainya :