from django.db import models from django.utils.translation import gettext_lazy as _ class LanguageQuerySet(models.QuerySet): """QuerySet for model Language""" def by_locale(self, locale: str) -> models.QuerySet: """Filter by locale""" return self.filter(locale=locale) def by_title(self, title: str) -> models.QuerySet: """Filter by title""" return self.filter(title=title) class Language(models.Model): """Language model.""" title = models.CharField(max_length=255, verbose_name=_('Language title')) locale = models.CharField(max_length=10, verbose_name=_('Locale identifier')) objects = LanguageQuerySet.as_manager() class Meta: verbose_name = _('Language') verbose_name_plural = _('Languages') def __str__(self): """String method""" return f'{self.title} ({self.locale})'