Перевод тегов в taggit
20 марта 2018 г. 6:12
Внимание: статья пока содержит просто рабочий код, демонстрирующий возможность внедрить перевод для тегов. Описание статьи будет позже.
Для перевода используется пакет parler.
Используйте дополнительное поле title
. Не добавляйте перевод полю name для django-taggit, так как на поле name
завязано много функциональности
from parler.models import TranslatableModel, TranslatedFields from taggit.managers import TaggableManager from taggit.models import GenericTaggedItemBase, TagBase, ItemBase class MyTag(TagBase, TranslatableModel): translations = TranslatedFields( title=models.CharField(_('Title'), max_length=100), ) @permalink def get_absolute_url(self): return 'tag_page', (self.slug, ) class Meta: ordering = ('name', ) verbose_name = _('Tag') verbose_name_plural = _('Tags') class MyTaggedItemBase(ItemBase): tag = models.ForeignKey(MyTag, related_name='tag_items', on_delete=models.CASCADE) class Meta: abstract = True @classmethod def tags_for(cls, model, instance=None, **extra_filters): kwargs = extra_filters or {} if instance is not None: kwargs.update({ '%s__content_object' % cls.tag_relname(): instance }) return cls.tag_model().objects.filter(**kwargs) kwargs.update({ '%s__content_object__isnull' % cls.tag_relname(): False }) return cls.tag_model().objects.filter(**kwargs).distinct() class MyTaggedItem(GenericTaggedItemBase, MyTaggedItemBase): def get_absolute_url(self): if not hasattr(self.content_object, 'get_absolute_url'): raise Http404 return self.content_object.get_absolute_url() class Meta: verbose_name = _('Tagged Item') verbose_name_plural = _('Tagged Items') index_together = [ ['content_type', 'object_id'], ]
Вывод тегов в шаблоне:
{% load i18n %} {% with my_object.tags.all as tags %} {% if tags %} <div class="tags a_i_c"> <p> <a href="{% url 'all_tags' %}" title="{% trans 'Show all tags' %}">{% trans 'Tags' %}</a>: {% for tag in tags %} <a href="{% url 'tag_page' tag.slug %}">{{ tag.title }}</a>{% if not forloop.last %}, {% endif %} {% endfor %} </p> </div> {% endif %} {% endwith %}
Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.
Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.
Комментарии: 0