Skip to content

Commit

Permalink
Merge pull request #33 from Mojtaba-saf/fix/query_optimization
Browse files Browse the repository at this point in the history
fix: optimize advertisement and category queries.
  • Loading branch information
PEMIDI authored Jul 29, 2023
2 parents 1f8dc67 + 0629b0b commit 466ab10
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
2 changes: 1 addition & 1 deletion advertisement/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def get_absolute_url(self):
@classmethod
def is_belong_user(cls, user, advertisement_pk):
"""To check this advertisement posted by this user or not"""
advertisement = cls.objects.get(pk=advertisement_pk)
advertisement = cls.objects.select_related('user').get(pk=advertisement_pk)
return user == advertisement.user


Expand Down
16 changes: 10 additions & 6 deletions advertisement/views.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
from django.db.models import Prefetch
from django.shortcuts import render
from django.utils.decorators import method_decorator
from django.views import View
from django.views.decorators.cache import cache_page
from django.views.generic import FormView, DetailView

from advertisement.forms import PostAdvertisementForm
from advertisement.models import Advertisement
from advertisement.models import Advertisement, AdvertisementImage
from category.models import Category
from package.models import Package
from .filters import AdvertisementFilter
Expand Down Expand Up @@ -33,7 +34,8 @@ class AdvertisementDetailView(DetailView):
template_name = 'advertisement/advertisement_detail.html'

def get(self, request, *args, **kwargs):
advertisement = Advertisement.objects.get(pk=kwargs['pk'])
advertisement = Advertisement.objects.select_related('user', 'location__city', 'category').prefetch_related(
'images').get(pk=kwargs['pk'])
packages = Package.objects.filter(is_enable=True)
return render(request, self.template_name, context={'advertisement': advertisement, 'packages': packages})

Expand All @@ -43,9 +45,10 @@ class AdvertisementCityListView(View):

def get(self, request, *args, **kwargs):
city = self.kwargs.get('city')
queryset = Advertisement.objects.filter(location__city__slug=city)
queryset = Advertisement.objects.filter(location__city__slug=city).prefetch_related(
Prefetch('images', queryset=AdvertisementImage.objects.order_by('id')))
filter = AdvertisementFilter(self.request.GET, queryset=queryset)
categories = Category.objects.all()
categories = Category.objects.all().select_related('parent').prefetch_related('children')
response = render(
request, 'advertisement/advertisement_list.html',
context={'filter': filter, 'categories': categories, 'city': city}
Expand All @@ -63,8 +66,9 @@ class AdvertisementCityCategoryListView(View):
def get(self, request, *args, **kwargs):
city = self.kwargs.get('city')
category = self.kwargs.get('category')
queryset = Advertisement.objects.filter(location__city__slug=city, category__slug=category)
categories = Category.objects.all()
queryset = Advertisement.objects.filter(location__city__slug=city, category__slug=category).prefetch_related(
Prefetch('images', queryset=AdvertisementImage.objects.order_by('id')))
categories = Category.objects.all().select_related('parent').prefetch_related('children')
filter = AdvertisementFilter(self.request.GET, queryset=queryset)
return render(
request, 'advertisement/advertisement_list.html',
Expand Down

0 comments on commit 466ab10

Please sign in to comment.