Страница списка разбита на страницы и отображает только 10 записей журнала. Несмотря на это, выполняется 95 запросов. Это влияет на скорость загрузки страницы. Вместо загрузки <1 секунды это занимает около 4-5 секунд. Вот мой код, пожалуйста, проверьте и дайте мне знать, как оптимизировать. views.py </p>
class PostListView(LoginRequiredMixin,ListView):
model = Post
paginate_by = 10
def get_queryset(self):
qs = super(PostListView, self).get_queryset().filter(Q(
Q(language_id__in=self.request.user.native_language),
~Q(user_id__in=self.request.user.forbidden_user_list))).order_by('-created')
return qs
def get_context_data(self, **kwargs):
context = super(PostListView, self).get_context_data(**kwargs)
context['list_type'] = 'all'
models.py
class Post(models.Model):
user = models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=60)
text = models.TextField()
native_text = models.TextField(blank=True)
created = models.DateTimeField(default=timezone.now, db_index=True)
# updated = models.DateTimeField(auto_now=True)
# is_corrected = models.BooleanField(default=False)
users_like = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='posts_liked',
blank=True)
language = models.ForeignKey('account.Language', on_delete=models.SET_NULL, null=True)
def __str__(self):
return self.text
def get_absolute_url(self):
return reverse('post-detail', args=[str(self.id)])
@property
def get_correctors(self):
from account.models import Profile as User
result = list(set(User.objects.all().filter((Q(correctedrows__post_id=self.id) | Q(perfectrows__post_id=self.id) | Q(comment__post_id=self.id)))))
return result