kronoszx
4/12/2018 - 8:40 PM

Django Cache Sets

# 940 querys
object_list = Payment.objects.all()

# 8 querys
from django.db.models import Prefetch
object_list = Payment.objects.\
    select_related(
        'business'
    ).prefetch_related(
        Prefetch(
            'vouchers',
            queryset=Voucher.objects.select_related('payment')
        )
    ).all()
class Business(models.Model):
  name = models.CharField()


class Payment(models.Model):
  name = models.CharField()
  date = models.DateTimeField()
  business = models.ForeignKey(
    Business,
    on_delete=models.PROTECT
  )
  

class Voucher(ModelIterable):
  name = models.CharField()
  payment = models.ForeignKey(
    Payment,
    on_delete=models.PROTECT,
    related_name="vouchers"
  )