为什么Django的__icontains和__iregex在我的代码中表现得很奇怪?

时间:2015-02-20 07:50:04

标签: python mysql regex django

我有一个Articles模型,用户可以保存他们的文章,这些文章可能会在其中标记一些字词。

就像在Twitter上一样,我希望当用户点击这些主题标签时,它应该拉出所有包含点击主题标签的文章,但代码表现得很奇怪。

如果我有三个帖子中有#itertools,我会在#itertools被点击时看到其中的三个,但我只得到其中一个,有时我会变空,有时我会得到所有文章。如果我用#fetchThis hashtag发布另一篇文章并点击它,搜索似乎找不到匹配并返回空查询,即使刷新页面后也是如此。

我真的无法理解为什么会这样。 __iregex__icontains都给出了相同的结果,很奇怪。

以下是代码:

def hash_tags(request, hash_tag):
    tag = '#' + hash_tag    
    data = Articles.objects.filter(content__iregex=r"^[^.]*{0}*[[:>:]]".format(tag))

    #---> or __icontains. The space added to tag is intentional. 
    #---> To avoid fetching articles with itertoolsss in them.

    #tag += ' '
    #data = Articles.objects.filter(content__icontains=tag)

    if len(data):
        fetched_articles = len(data)
    else:
        data = ["No data matches your search!"]
        fetched_articles = 0

    context = {'articles': articles, 'fetched_articles':fetched_articles}
    return render(request, 'mysite/hashtags.html', context)

我做错了什么?我现在被困在这里好几天了。

我使用Django 1.6和MySQL

0 个答案:

没有答案