假設有一個包含所有要搜索的鍵的列表,稱為taglist。要過濾所有 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)我會得到一個關于結果的查詢列表。我可以獲得像這樣的元組列表(each_result,tag_that_used_to_found_the_result)嗎?
1 回答

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