【问题标题】:django tagging - filter by tagdjango tagging - 按标签过滤
【发布时间】:2011-09-15 21:38:30
【问题描述】:

我在free-time project,我有这个模型:

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

TagAutocompleteField() 与来自django-tagging 的TagField() 相同,女巫很简单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)

但我也不能在过滤器中使用它。

我应该如何获取所有具有相同标签的帖子?标记的常用方法是按标记获取对象,但如果标记被少数应用程序使用,它可能提供的不仅仅是帖子。

【问题讨论】:

    标签: python django view filter tags


    【解决方案1】:

    尝试使用regex

    .filter(tags__iregex=r'\b%s\b' % tag)
    

    【讨论】:

    • 可能几乎任何世界问题都可以用正则表达式解决...谢谢它的工作原理:)
    • 需要注意的是,mySQL regex 与 Python 不同。
    猜你喜欢
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 2017-05-25
    相关资源
    最近更新 更多