Django orm 通過raw 調用sql 查詢被包含,字段包含在搜索字段中

在Django orm的使用中沒有找到 被包含的查詢操作(有知道的望告知下,謝謝 )。 於是想到使用sql語句進行查詢,使用sql裏的 LIKE CONCAT ,使用orm  通過raw  調用sql 的方式

我要查詢的是,文章標籤包含在我要查詢的語句中,標籤和文章是ManyToMany的關係,代碼如下

def ArticleList(req):
    search = req.GET.get('search') 
    artic = aiarticle.objects.filter(is_show=True).raw(
        "SELECT DISTINCT aiarticle.title,aiarticle.id,aiarticle.link FROM intelligentai_aiarticle as aiarticle,intelligentai_aitag as tag,intelligentai_aiarticle_tags WHERE aiarticle.id=intelligentai_aiarticle_tags.aiarticle_id AND tag.id=intelligentai_aiarticle_tags.aitag_id AND %s LIKE CONCAT(%s,tag.tag_name,%s)",
        params=[search, '%', '%'])
    data_list = aiarticleSerializers(artic, many=True) 
    return JsonResponse({"ret": 0, 'msg': 'success', 'lister': data_list.data})

因爲文章可以有多個標籤導致查詢出來有重複  就在顯示的字段前加了 DISTINCT 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章