use django-taggit for tags

This commit is contained in:
Frédéric Péters 2015-11-30 18:14:16 +01:00
parent 97cc8c7008
commit 3f37ad5c31
6 changed files with 12 additions and 4 deletions

View File

@ -4,3 +4,4 @@ django-select2
django-ckeditor<4.5.3
django-haystack
django-reversion
django-taggit

View File

@ -103,6 +103,7 @@ setup(
'django-ckeditor<4.5.3',
'django-haystack',
'django-reversion',
'django-taggit',
'requests',
'whoosh',
],

View File

@ -20,6 +20,7 @@ from django.utils.translation import ugettext_lazy as _
from ckeditor.fields import RichTextField
import reversion
from taggit.managers import TaggableManager
@reversion.register
@ -27,7 +28,8 @@ class Page(models.Model):
title = models.CharField(_('Title'), max_length=200)
slug = models.SlugField(_('Slug'))
content = RichTextField(_('Text'))
keywords = models.CharField(_('Keywords'), max_length=200, blank=True)
tags = TaggableManager(_('Keywords'), blank=True,
help_text=_('A comma-separated list of tags.'))
class Meta:
ordering = ['title']

View File

@ -27,13 +27,16 @@ class PageIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True)
text_auto = indexes.EdgeNgramField()
slug = indexes.CharField(model_attr='slug', indexed=False)
keywords = indexes.CharField(model_attr='keywords', boost=1.5)
tags = indexes.CharField(boost=1.5)
def get_model(self):
return Page
def prepare_text(self, obj):
return obj.title + ' ' + obj.keywords + ' ' + HTMLParser().unescape(strip_tags(obj.content))
return obj.title + ' ' + self.prepare_tags(obj) + ' ' + HTMLParser().unescape(strip_tags(obj.content))
def prepare_text_auto(self, obj):
return self.prepare_text(obj)
def prepare_tags(self, obj):
return ' '.join([tag.name for tag in obj.tags.all()])

View File

@ -21,7 +21,7 @@
<p class="keywords">
{% trans 'Keywords:' %}
{{ object.keywords }}
{% for tag in object.tags.all %}{{tag}}{% if not forloop.last %}, {% endif %}{% endfor %}
</p>
{% endblock %}

View File

@ -44,6 +44,7 @@ INSTALLED_APPS = (
'ckeditor',
'haystack',
'reversion',
'taggit',
'welco.sources.counter',
'welco.sources.mail',
'welco.sources.phone',