Отсортировать теги по имени, используя django-taggit и django-taggit-labels

3 ноября 2016 г. 11:45

С помощью django-taggit-labels теги можно отобразить следующим образом:

И это достаточно удобно! Так как видишь, какие теги у тебя есть, а другими словами какие теги можно связать с объектом, например, со статьёй в блоге. Когда есть простое поле ввода тегов, можно легко в разных статьях создать теги js и javascript или "Другое" и "Разное", которые являются одним и тем же по значению. Или даже "другое" и "Другое", значения которых одинаково только регистр первой буквы разный (как на скриншоте выше). С django-taggit-labels вы оградите себя от подобных одинаковых по значению тегов, благодаря их визуальному отображению.

Ниже представлен способ сортировки тегов по имени:

# forms.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django import forms
from taggit.forms import TagField
from taggit_labels.widgets import LabelWidget


class MyLabelWidget(LabelWidget):
    def tag_list(self, tags):
        return [(tag.name, 'selected' if tag.name in tags else '') for tag in self.model.objects.order_by('name')]


class MyModelForm(forms.ModelForm):
    tags = TagField(required=False, widget=MyLabelWidget)

Вся фишка в переопределении метода tag_list(self, tags). Обратите внимание, что мы преобразовали оригинальный метод, заменив выборку объекта на self.model.objects.order_by('name').

Теперь форму можно добавлять к admin классу:

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm

Оцените статью

5 из 5 (всего 1 оценка)

captcha
Отмеченные звёздочкой поля ( * ) являются обязательными для заполнения.

Спасибо за ваш отзыв!

После нажатия кнопки "Отправить" ваше сообщение будет доставлено мне на почту.

Автор статьи

Артём Мальцев

Веб-разработчик, владеющий знаниями языка программирования Python, фреймворка Django, системы управления содержимым сайта Django CMS, платформы для создания интернет-магазина Django Shop и многих различных приложений, использующих эти технологии.

Права на использование материала, расположенного на этой странице https://vivazzi.pro/ru/it/ordering-by-name-using-taggit-labels/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Артём Мальцев
Ссылка на статью: <a href="https://vivazzi.pro/ru/it/ordering-by-name-using-taggit-labels/">https://vivazzi.pro/ru/it/ordering-by-name-using-taggit-labels/</a>

Больше: Правила использования сайта

Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.

Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.

Комментарии: 0

Вы можете оставить комментарий как незарегистрированный пользователь.

Но зарегистрировавшись, вы сможете:

  • получать оповещения об ответах
  • просматривать свои комментарии
  • иметь возможность использовать все функции разработанных сервисов

Для комментирования от своего имени войдите или зарегистрируйтесь на сайте Vuspace

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц