在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