Make a few database performance optimisations

This commit is contained in:
Danielle McLean 2017-10-27 08:52:26 +11:00
parent eaf54a4e83
commit 824aaa1e57
Signed by untrusted user: 00dani
GPG key ID: 5A5D2D1AFF12EEC5
4 changed files with 61 additions and 8 deletions

View file

@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-26 21:46
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('entries', '0003_remove_entry_summary'),
]
operations = [
migrations.AlterField(
model_name='entry',
name='author',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='entries', to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='entry',
name='kind',
field=models.CharField(choices=[('note', 'note'), ('article', 'article')], db_index=True, default='note', max_length=30),
),
]

View file

@ -10,17 +10,29 @@ from . import kinds
ENTRY_KINDS = [(k.id, k.id) for k in kinds.all]
class EntryManager(models.Manager):
def get_queryset(self):
qs = super(EntryManager, self).get_queryset()
return qs.select_related('author').prefetch_related('syndications')
class Entry(ModelMeta, models.Model):
objects = EntryManager()
kind = models.CharField(
max_length=30,
choices=ENTRY_KINDS,
db_index=True,
default=ENTRY_KINDS[0][0]
)
name = models.CharField(max_length=100, blank=True)
content = models.TextField()
author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
author = models.ForeignKey(
get_user_model(),
related_name='entries',
on_delete=models.CASCADE,
)
published = models.DateTimeField()
updated = models.DateTimeField()
@ -70,7 +82,14 @@ class Entry(ModelMeta, models.Model):
ordering = ['-published']
class SyndicationManager(models.Manager):
def get_queryset(self):
qs = super(SyndicationManager, self).get_queryset()
return qs.select_related('profile__site')
class Syndication(models.Model):
objects = SyndicationManager()
entry = models.ForeignKey(
Entry,
related_name='syndications',