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 

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