From a50c475bb8e4128735b27939ab49953adfecb5c3 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 28 Jun 2022 12:35:21 +0200 Subject: [PATCH] wip --- passerelle/apps/base_adresse/models.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/passerelle/apps/base_adresse/models.py b/passerelle/apps/base_adresse/models.py index 9149ab69..6c9caf42 100644 --- a/passerelle/apps/base_adresse/models.py +++ b/passerelle/apps/base_adresse/models.py @@ -7,6 +7,7 @@ from urllib import parse as urlparse from django.contrib.postgres.fields import JSONField from django.db import connection, models from django.db.models import Q +from django.db.models.functions import Upper from django.utils import timezone from django.utils.http import urlencode from django.utils.translation import ugettext_lazy as _ @@ -575,13 +576,13 @@ class UnaccentNameMixin: class StreetModel(UnaccentNameMixin, models.Model): - ban_id = models.CharField(_('BAN Identifier'), max_length=32, null=True) + ban_id = models.CharField(_('BAN Identifier'), max_length=32, null=True, db_index=True) city = models.CharField(_('City'), max_length=150) name = models.CharField(_('Street name'), max_length=150) unaccent_name = models.CharField(_('Street name ascii char'), max_length=150, null=True) - zipcode = models.CharField(_('Postal code'), max_length=5) + zipcode = models.CharField(_('Postal code'), max_length=5, db_index=True) type = models.CharField(_('Street type'), max_length=30) - citycode = models.CharField(_('City Code'), max_length=5) + citycode = models.CharField(_('City Code'), max_length=5, db_index=True) last_update = models.DateTimeField(_('Last update'), null=True, auto_now=True) resource = models.ForeignKey(BaseAdresse, on_delete=models.CASCADE, verbose_name=_('BAN Connector')) @@ -650,8 +651,8 @@ class CityModel(UnaccentNameMixin, models.Model): name = models.CharField(_('City name'), max_length=150) unaccent_name = models.CharField(_('City name ascii char'), max_length=150, null=True) - code = models.CharField(_('INSEE code'), max_length=5) - zipcode = models.CharField(_('Postal code'), max_length=5) + code = models.CharField(_('INSEE code'), max_length=5, db_index=True) + zipcode = models.CharField(_('Postal code'), max_length=5, db_index=True) population = models.PositiveIntegerField(_('Population')) department = models.ForeignKey(DepartmentModel, on_delete=models.CASCADE, blank=True, null=True) region = models.ForeignKey(RegionModel, on_delete=models.CASCADE, blank=True, null=True) @@ -677,6 +678,9 @@ class CityModel(UnaccentNameMixin, models.Model): class Meta: ordering = ['-population', 'zipcode', 'unaccent_name', 'name'] unique_together = ('resource', 'code', 'zipcode') + indexes = [ + models.Index(Upper('unaccent_name'), name='unaccent_istartswith_idx'), + ] def __str__(self): return '%s %s' % (self.zipcode, self.name) -- 2.35.1