теги django - фильтр по тегу - PullRequest
1 голос
/ 16 июня 2011

Я в проекте свободного времени , и у меня есть эта модель:

class Post(models.Model):
    title = models.CharField(max_length=255)
    <..>
    tags = TagAutocompleteField()

TagAutocompleteField() совпадает с TagField() из django-tagging Ведьма проста CharField, поэтому print post.tags даст 'one two three' вместо ['one', 'two', 'three',].

Также у меня есть вид:

def tagged(request, tag_id):
    tag = get_object_or_404(Tag, pk=tag_id)
    post_list = Post.objects.all() \
                .filter(tags__split__in=tag) \                                                          
                .filter(is_published=True) \
                .order_by('-time_publish')
    return render_to_response('plugins/persona/list.html', {
                              'post_list': post_list,
                              }) 

Проблема в том, что я не могу отфильтровать все сообщения, имеющие определенный тег, поскольку теги charField Я пытался использовать split(), но фильтры не позволяют это.

Люди предлагают использовать эту функцию для получения списка тегов:

def get_tags(self):                                                                                 
    return Tag.objects.get_for_object(self)

но пока я не могу использовать его в фильтрах.

Как мне получить все сообщения с одинаковым тегом? Обычный способ тегирования - это получение объектов по тегу, но если теги используются несколькими приложениями, он может выдавать больше, чем посты.

1 Ответ

2 голосов
/ 16 июня 2011

Попробуйте использовать regex

.filter(tags__iregex=r'\b%s\b' % tag)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...