在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