Закрыть

Для эффективной работы на сайте используются cookie и обработка персональных данных. Пользуясь этим сайтом, вы соглашаетесь с правилами использования сайта. Подробнее

Цитата дня

Vivazzi.ru

Личный сайт Мальцева Артема

Если человек стремится к чему-то всем своим сердцем, он обязательно сумеет добиться того, чего хочет, даже если это кажется невозможным, даже если все окружающие открыто заявляют ему, что это невозможно.

Чак Норрис

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

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

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

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

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

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

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

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

Автор статьи

Права на использование данной статьи, расположенной на настоящей странице http://vivazzi.ru/it/ordering-by-name-using-taggit-labels/:

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

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

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

Вам нужно саморазвиваться или вы хотите зарабатывать деньги?

Или вы ищите хорошие IT сервисы или книги? Сохраните свое время и взгляните на мою подборку рекомендаций, которыми постоянно пользуюсь.
Посмотреть рекомендации

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

Вы можете оставить комментарий как незарегистрированный пользователь. Но, зарегистрировавшись, вы сможете получать оповещения об ответах, а также иметь доступ к своему личному аккаунту для просмотра своих комментариев.

Чтобы оставить комментарий от своего имени войдите или зарегистрируйтесь обычным способом или через социальные сети:

Отправить

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

Попробуйте