Как стать автором
Обновить

Комментарии 11

Я для добавления тегов раньше тоже много пользовался всякими django-taggit и django-tagging, но уже давно начал использовать djorm-ext-pgarray. Как пример использования для тегов:
from django.db import models
from djorm_pgarray.fields import ArrayField
from djorm_expressions.models import ExpressionManager

class Post(models.Model):
    title = models.CharField(max_length=255)
    content = models.TextField()
    tags = ArrayField(dbtype="varchar(255)")

    objects = ExpressionManager()

а потом:
Post(title='Lorem Ipsum', content='Dolor sit amet', tags=['hello','world'])
post.save()


Удобное поле ввода с автокомплитом для этого сделал но без jquery-ui(как в вашем) а с использованием bootstrap tagmanager.
Кому интересно, тут еще есть полезные плюшки типа djorm-ext-pool, djorm-ext-hstore, djorm-ext-pgfulltext, djorm-ext-pggeom, djorm-ext-pgbytea и другие.
Ради одного этого комментария стоило писать статью :)

Спасибо за наводку! Обязательно посмотрю в ближайшее время ваши djorm-ext.
А оно индексы поддерживает. Postgresql то понятно что GIN и GiST поддерживает, а само расширение?
Не поддерживает.
Уточню. Поддерживается обычный B-tree индекс по всему полю, но не GIN/GiST.
Тэги нам нужны для того, чтобы по ним можно было делать выборку необходимой информации, а не для того чтобы просто показать их внизу страницы. Проблема в том, что по элементам массива нельзя построить индекс, а значит выборки при большом объёме данных будут очень медленными. Вот цитата из документации:

Arrays are not sets; searching for specific array elements can be a sign of database misdesign. Consider using a separate table with a row for each item that would be an array element. This will be easier to search, and is likely to scale better for a large number of elements.


Решение, конечно, элегантное, но не производительное.
Раз рассказываете про батарейки, хоть про каждую пару слов скажите и что они делают
Что именно Вам не понятно?
Интересно число — 5 :)
Спасибо за пост, особенно за django-bitfield :)
Пожалуйста :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории