首页 > 解决方案 > Django:从查询集中获取具有 id 的对象

问题描述

我有这些模型(名称已更改):

class Blog(models.Model):
    created_dtm = models.DateTimeField()
    updated_dtm = models.DateTimeField()
    title = models.CharField(max_length=200, null=True, blank=True)
    creator = models.ForeignKey(Authors, on_delete=models.CASCADE, null=True, blank=True)

class BlogAuthor(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    class Meta:
        unique_together = ('blog', 'author')

我需要获取作者参与的所有博客(及其详细信息)。问题是每个博客可以有多个作者。

现在我可以使用以下方法获取博客 ID 的查询集:

BlogAuthor.objects.filter(author=request.user).values_list('blog_id', flat=True)

然后尝试使用 cycle 一个一个地获取每个博客for,但是是否可以通过一个查询获取博客列表?

标签: pythondjangodjango-queryset

解决方案


只需使用反向关系

Blog.objects.filter(blogauthor__author=request.user)

推荐阅读