假設(shè)有一個(gè)包含所有要搜索的鍵的列表,稱為taglist。要過(guò)濾所有 Post contains tag in taglist,我使用以下命令。Post.objects.filter(tags__tag__in=taglist).order_by('-id')并在 class Posttags = models.ManyToManyField('PostMention')在 PostMenthionclass PostMention(models.Model):
tag = models.CharField(unique=True,max_length=200)我會(huì)得到一個(gè)關(guān)于結(jié)果的查詢列表。我可以獲得像這樣的元組列表(each_result,tag_that_used_to_found_the_result)嗎?
1 回答

慕容708150
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
是的,我們可以將.annotate(..)每一行與相關(guān)的Tag:
from django.db.models import F
Post.objects.filter(
tags__tag__in=taglist
).annotate(
the_tag=F('tags__tag')
).order_by('-id')
這里的Post對(duì)象將有一個(gè)額外的屬性.the_tag,它包含匹配的標(biāo)簽的字符串。如果匹配多個(gè)標(biāo)簽,查詢Post集中將有多個(gè)對(duì)象,每個(gè)對(duì)象都有自己的.the_tag屬性。
我們可以將其后處理為 2 元組,但我認(rèn)為屬性是更好的選擇,因?yàn)榇俗侄伟膬?nèi)容很清楚。
添加回答
舉報(bào)
0/150
提交
取消