Закрыть

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

Цитата дня

Vivazzi.ru

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

Если ничего не помогает, прочтите документацию, наконец! (о программировании)
RaD

Отсортировать теги по имени, используя 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" после своего запроса.

Попробуйте