如何在 Django 中获取过滤器键和结果元组

假设有一个包含所有要搜索的键的列表,称为taglist。要过滤所有 Post contains tag in taglist,我使用以下命令。

Post.objects.filter(tags__tag__in=taglist).order_by('-id')

并在 class Post

tags = models.ManyToManyField('PostMention')

在 PostMenthion

class PostMention(models.Model):
    tag = models.CharField(unique=True,max_length=200)

我会得到一个关于结果的查询列表。

我可以获得像这样的元组列表(each_result,tag_that_used_to_found_the_result)吗?


慕容3067478
浏览 123回答 1
1回答

慕容708150

是的,我们可以将.annotate(..)每一行与相关的Tag:from django.db.models import FPost.objects.filter(    tags__tag__in=taglist).annotate(    the_tag=F('tags__tag')).order_by('-id')这里的Post对象将有一个额外的属性.the_tag,它包含匹配的标签的字符串。如果匹配多个标签,查询Post集中将有多个对象,每个对象都有自己的.the_tag属性。我们可以将其后处理为 2 元组,但我认为属性是更好的选择,因为此字段包含的内容很清楚。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python