【发布时间】:2020-09-01 00:16:03
【问题描述】:
我有两个模型,具有多对多关系的实体和标签:
class Tag(models.Model):
name = models.CharField(max_length=128)
class Entity(models.Model):
name = models.CharField(max_length=128)
tags = models.ManyToManyField(Tag)
在一个视图中,我有一个标签 ID 列表,并希望获得前 10 个实体,其中至少有一个标签按它们与我的列表共有的标签数量排序。
我目前正在通过“tags__in”做“至少一个”部分,并在我的查询集末尾添加一个“.distinct()”。这是正确的方法吗?
我可以看到注释中有一个“计数”可以有一些参数,有没有办法只指定我的列表中的 id ? 如果不需要,我是否需要通过这样的 SQL 查询(来自文档)?我担心我会失去相当多的表现。
Blog.objects.extra(
select={
'entry_count': 'SELECT COUNT(*) FROM blog_entry WHERE blog_entry.blog_id = blog_blog.id'
},
)
【问题讨论】:
标签: django many-to-many django-queryset