Архивы по Категориям: Новости - Page 15

django regroup пример

Сегодня Django снова порадовала, мне требовалось отобразить список категорий с под категориями
не важно можно с ul-li.
мне надо было завернуть всё это в красивый селект, ну вот что-то вроде этого.

в хтмл это примерно вот так

[cc lang=”html”]
[/cc]

Допустим у меня есть 2 вот таких модели в вакууме.
Одна: категория – Firefox (как в примере выше.)
[cc lang=”python”]
class Category(models.Model):
name = models.CharField(max_length=100)

def __unicode__(self):
return self.name[/cc]

И вторая не посредственно список, где есть поле указывающее на связь с родителем

[cc lang=”python”]
class SubCategory(models.Model):
category_name = models.ForeignKey(Category)
name = models.CharField(max_length=200)

def __unicode__(self):
return self.name[/cc]

Едем дальше.
в PHP, я бы в цикле прорисовки категорий поставил бы ещё один цикл выбирающий всех детей для данной категории. (хаха – много запросов ну и ладно)

Но тут у нас всё интереснее, в притом намного.
Мы во views должны сформировать что-то и отправить в шаблон уже как-то почти готовое для отображения.

Хочется городить велосипед, но тут Документация Django какбэ подсказывает

что есть такая хреновая, которая мне поможет.

Суть её в том, что тот массив что придёт к нам она может пересортироватьперегруппировать по любому полю, и поможет нам красиво его отобразить.

В итоге во views.py я делаю выборку того, что мне нужно.
Например вот так:
[cc lang=”python”]sub_category_list = SubCategory.objects.all()[/cc]

И всё вот это мы отправляем тихо мирно в шаблон.
А в шаблоне нас встретит уже магический regroup

Вот с такой конструкцией
[cc lang=”python”]
{% regroup sub_category_list by category_name as categ_list %}

[/cc]

Теперь по порядку.
[cc lang=”python”]{% regroup sub_category_list by category_name as categ_list %}[/cc]

Группируем sub_category_list по полю category_name и называем результат categ_list
Дальше создаём html элемент, тут я думаю всё понятно.

и начинаем разбирать то, что у нас в categ_list

[cc lang=”python”]{% for ca in categ_list %}[/cc]
Тут рассказывать ничего не надо, перебираем элементы по порядку
[cc lang=”python”][/cc]
Тут мы выводим то почему мы группировали {{ca.grouper}}
[cc lang=”python”]{% for item in ca.list %}[/cc]
Вложенный цикл, обходим то, что внутри группы (тут нам помогает ca.list )
[cc lang=”python”][/cc]
Собственно выводим всю эту красоту в конечный элемент

{% endfor %}
[/cc]

Вот и завершили все наши дела.
и получили нечто похожее на селект рутреккера тот, что в самом верху.

просто красиво и со вкусом.

Мой отчёт по sape

Картинка для заманухи
И так прошло несколько месяцев, как я писал, что мой доход перевалил 100р. в сутки.

и я достиг той психологической метки, которую ставил – 200+р. в сутки

и вот сейчас……
Читать далее »

pindgin facebook /usr/share/pixmaps/pidgin/protocols/16/facebook.png

Любимая убунту недавно порадовала рекурсией, пыталась перустановить пакет pidgin и ей этого не удавалось, не могла удалить
/usr/share/pixmaps/pidgin/protocols/16/facebook.png вот этот файл, ручное удаление не помогало, дело в том, что последняя версия pidgin конфликтует с пакетом pidgin-facebookchat

Вот после его удаления всё наладилось

Обновление Linux Mint 9 до 10

А вот и хрен вам, оказывается, не поддерживает эту идеалогию дистрибутив, у меня убунту с 7.10 шла сама до 10.10
А тут нет, говорит бэкапь данные и делай fresh install.
Обидно, чтож… люблю я получать новые свистелки и перделки через инет, не прерываясь.

слил свежий Минт. посмотрим… долго настраивается вся эта среда разработки 🙁

Хотя это же та же убунта, и подену имён в репозитории никто не отменял.

Редактируем
[cc lang=”bash”]sudo gedit /etc/apt/sources.list[/cc]

Удаляем всё и добавляем вот это

[cc lang=”bash”]deb http://packages.linuxmint.com/ julia main upstream import
deb http://archive.ubuntu.com/ubuntu/ maverick main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ maverick-security main restricted universe multiverse
deb http://archive.canonical.com/ubuntu/ maverick partner
deb http://packages.medibuntu.org/ maverick free non-fre[/cc]

Сохраняем закрываем

Теперь обновляем
[cc lang=”bash”]
sudo apt-get update
sudo apt-get dist-upgrade[/cc]

После завершения на последок

[cc lang=”bash”]sudo apt-get upgrade[/cc]

ну и перезагружаемся

Удалить пустые каталоги

Как удапить все пустые каталоги?

[cc lang=”bash”]find . -type d -empty -delete[/cc]