Reduce number of queries required to render an entries list, especially the home page

This commit is contained in:
Danielle McLean 2018-01-24 13:18:22 +11:00
parent 957fc4ada7
commit 75e08aa1b2
Signed by untrusted user: 00dani
GPG key ID: 5A5D2D1AFF12EEC5
4 changed files with 42 additions and 12 deletions

View file

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.9 on 2018-01-24 02:11
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('users', '0010_auto_20171206_2211'),
]
operations = [
migrations.AlterModelManagers(
name='user',
managers=[
],
),
]

View file

@ -31,7 +31,14 @@ class Site(models.Model):
ordering = ('name',)
class UserManager(models.Manager):
def get_queryset(self):
return super(UserManager, self).get_queryset().prefetch_related('keys', 'profiles')
class User(ModelMeta, AbstractUser):
objects = UserManager()
avatar = models.ImageField(upload_to=avatar_path)
note = models.TextField(blank=True)
xmpp = models.EmailField(blank=True)
@ -61,17 +68,17 @@ class User(ModelMeta, AbstractUser):
@cached_property
def facebook_id(self):
try:
return self.profiles.filter(site__name='Facebook').values('username')[0]['username']
except IndexError:
return None
for p in self.profiles.all():
if p.site.name == 'Facebook':
return p.username
return None
@cached_property
def twitter_username(self):
try:
return '@' + self.profiles.filter(site__name='Twitter').values('username')[0]['username']
except IndexError:
return None
for p in self.profiles.all():
if p.site.name == 'Twitter':
return '@' + p.username
return None
@property
def json_ld(self):