@@ -490,6 +490,35 @@ def date_label(self):
490490 return date_text
491491
492492
493+ class CountryQuerySet (SearchQueryMixin , models .QuerySet ):
494+ """
495+ Makes country searchable
496+ """
497+ def get_search_filter (self , search_term ):
498+ return (
499+ Q (iso3166a2__iexact = search_term )
500+ | Q (iso3166a3__iexact = search_term )
501+ | Q (name__iexact = search_term )
502+ | Q (iso_en_name__iexact = search_term )
503+ | Q (iso_en_proper__iexact = search_term )
504+ | Q (iso_en_ro_name__iexact = search_term )
505+ | Q (iso_en_ro_proper__iexact = search_term )
506+ | Q (iso_fr_name__iexact = search_term )
507+ | Q (iso_fr_proper__iexact = search_term )
508+ | Q (iso_es_name__iexact = search_term )
509+ )
510+
511+ class CountryManager (models .Manager ):
512+ """
513+ Custom manager for Country model using CountryQuerySet.
514+ """
515+ def get_queryset (self ):
516+ qs = CountryQuerySet (self .model , using = self ._db )
517+ return qs
518+
519+ def search (self , search_term ):
520+ return self .get_queryset ().search (search_term )
521+
493522class Country (models .Model ):
494523 """
495524 A Country (or dependent territory or special area of geographical interest) included in ISO 3166.
@@ -546,6 +575,7 @@ class Country(models.Model):
546575 verbose_name = _ ("ISO Spanish name" ),
547576 help_text = _ ("The name in Spanish of the Country approved by the ISO 3166 Maintenance Agency" ),
548577 )
578+ objects = CountryManager ()
549579
550580 def __str__ (self ):
551581 return self .iso_en_ro_name if self .iso_en_ro_name else ""
0 commit comments