What is simplest way join __contains and __in?

前端 未结 2 1022
一个人的身影
一个人的身影 2021-01-23 03:09

I am doing tag search function, user could observe a lot of tags, I get it all in one tuple, and now I would like to find all text which include at least one tag from the list.

相关标签:
2条回答
  • 2021-01-23 03:54

    Here you go:

    filter = Q()
    for t in tag_tuple: 
       filter = filter | Q(data__contains=t)
    return text.objects.filter(filter)
    

    A couple of tips:

    • You should be naming your model classes with a capital (i.e. Text, not text)
    • You may want __icontains instead if you're not worried about the case
    0 讨论(0)
  • 2021-01-23 04:07

    I don't know Django, so I have no idea how to apply this filter, but it seems you want a function like this one:

    def contains_one_of(tags, text):
        text = text.split()   # tags should match complete words, not partial words
        return any(t in text for t in tags)
    
    0 讨论(0)
提交回复
热议问题