为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容3067478 2021-07-29 14:04:39
假设有一个包含所有要搜索的键的列表,称为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 元组,但我认为属性是更好的选择,因为此字段包含的内容很清楚。


查看完整回答
反对 回复 2021-08-03
  • 1 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号