假设有一个包含所有要搜索的键的列表,称为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
提交
取消