class Post(models.Model):
text = models.TextField()
class Project(models.Model):
name = models.CharField(max_length=60)
description = models.CharField(max_length=500)
class Tag(models.Model):
name = models.CharField(max_length=60)
project = models.ForeignKey(Project, on_delete=models.CASCADE)
class TaggedPost(models.Model):
org_post = models.ForeignKey(Post, on_delete=models.CASCADE)
tags = models.ManyToManyField(Tag)假设我已经定义了上述模型。存在多个项目,它们都有多个标记。
例:
并不是每个Post都有一个TaggedPost对象。例如:
-> Tag2->Tag2->->Tag2->->->->->Tag2->->Tag2->->Tag2->->Tag2->->Tag2->Tag2->->Tag2en23 20,(以下是多个项目的标记)<代码>F 216
我现在要做的是一个查询集,它包含所有的帖子(也包括未标记的帖子),但只包含定义项目的标记。
qs.include_tags_of_project(Project1)的结果是:
F 226qs.include_tags_of_project(Project2)的结果是:
F 236有什么建议怎么处理吗?Thx
发布于 2022-07-22 20:37:01
首先,通过project.id (或project.name或description)获取所有帖子,第二,生成prefetch_related,以获取项目的所有标记。预取帮助您只获得标记,特别是项目。
Post.objects.filter(taggedposts__tags__project_id=project1.pk).prefetch_related(Prefetch('tags', queryset= Tag.objects.filter(project_id=project1.pk)))https://stackoverflow.com/questions/73084718
复制相似问题