5 Полезных Батареек Для Джанго

При разработке вы постоянно сталкиваетесь с различными проблемами, которые зачастую невозможно решить в лоб.

Но многие проблемы уже кем-то решены – нужно только найти это решение.

Итак, день за днем я собирал небольшую коллекцию батареек, которые значительно облегчили мне жизнь.

Чем спешу поделиться:



Джанго-select2

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

Он содержит два типа виджетов:

  • Свет — виджеты для не очень длинных списков значений, так как все значения выводятся на страницу сразу;
  • Тяжелый — расширенные виджеты для загрузки данных через Ajax из внешнего источника.

    Таким источником может быть ваш собственный View или, если не требуется сложная логика, встроенный View в django-select2 может использоваться для возврата данных совместно с соответствующим АвтоТяжелый -виджет.

GitHub Документация

Джанго-битное поле

Позволяет хранить списки значений в поле модели в виде битового массива, длина которого ограничена максимальной длиной BigInt в используемой базе данных.

Пример использования (взято из документации):

  
  
  
  
  
   

from bitfield import BitField class MyModel(models.Model): flags = BitField(flags=( 'awesome_flag', 'flaggy_foo', 'baz_bar', ))



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

Для себя я решил эту проблему следующим образом: модели.

py:

from django.db import models from django.utils.translation import ugettext_lazy as _ from bitfield import BitField class MyModel(models.Model): FLAGS = ( ('flag1', _('flag 1 description')), ('flag2', _('flag 2 description')), ('flag3', _('flag 3 description')), ) flags = BitField([k for k, v in FLAGS])

формы.

py

from django import forms from .

models import MyModel class MyModelForm(forms.ModelForm): def _set_choices(self, field, choices): self.fields[field].

widget.choices = choices def __init__(self, *args, **kwargs): super(MyModelForm, self).

__init__(*args, **kwargs) self._set_choices('flags', MyModel.FLAGS)

admin.py

from django.contrib import admin from .

forms import MyModelForm from .

models import MyModel class MyModelAdmin(admin.ModelAdmin): form = MyModelForm admin.site.register(MyModel, MyModelAdmin)

GitHub

тегирование Джанго

Существует несколько реализаций тегов для Django, но я хотел бы обратить ваше внимание на ветку машинных тегов из этой статьи.

репозиторий .

Такая реализация тегов добавляет возможность разделять их между пространствами имен и, соответственно, использовать разные наборы тегов для разных полей.

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

Честно говоря, я пока не нашел этому применения.

Моя вилка на GitHub с некоторыми исправлениями.

Но сам модуль не поддерживает автодополнение — а это, согласитесь, очень полезная функция.

Существует множество реализаций: один раз , два , три — это только первые ссылки из Google. Но ни один из них не поддерживает пространства имен из описанной выше версии с тегами django, поэтому я взял на себя смелость исправить этот недостаток.

Вот так появилась моя вилка.



Джанго-тегирование-автопредложение

Я не буду никак переписывать документацию, поэтому просто приведу пример использования: Приложение необходимо добавить в INSTALLED_APPS и в urls.py проекта:

from django.conf.urls import patterns, include, url urlpatterns = patterns('', url(r'^tagging/', include('tagging_autosuggest.urls')), )

И добавьте в модель необходимые поля:

from django.db import models from tagging_autosuggest.fields import TagAutosuggestField class MyModel(models.Model): tags1 = TagAutosuggestField(namespace='ns1', max_length=300) tags2 = TagAutosuggestField(namespace='ns2', max_length=300)

Результат:

5 полезных батареек для Джанго

GitHub

Джанго-автозаполнение-свет

Еще одна батарейка, облегчающая работу со списками.

Создает удобные виджеты в админке с автозаполнением для таких полей как CharField, ForeignKey, ManyToMany, а также для универсальных связей (ForeignKey и M2M).

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

А вот как GenericForeignKey выглядит в реальном проекте:

5 полезных батареек для Джанго

GitHub Документация Мой скромный вклад в opensource: github.com/YuegoЭtab=репозитории Сообщения об ошибках, опечатках и т.п.

традиционно принимаются в личном сообщении.

Теги: #django #batteries #select2 #bitfield #tagged #tagged-autosuggest #autocomplete #django

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.