如何获取与传递给 Django 模板的查询集相关的查询集对象

Posted

技术标签:

【中文标题】如何获取与传递给 Django 模板的查询集相关的查询集对象【英文标题】:How do you get queryset objects related to queryset passed to templates in Django 【发布时间】:2021-02-25 18:20:42 【问题描述】:

我有这两个模型,你可以看到它们有关系。

class Post(models.Model):
    text = models.TextField()

class PostImage(models.Model):
    post = models.ForeignKey(Post, default=None, on_delete=models.CASCADE)
    image = models.FileField(upload_to = 'media/',blank=True, null=True)

据我所知,如果我查询帖子并将它们推送到模板并发布,我希望在我的模板中使用类似的东西来检索附加到帖子的图像 URL,但它似乎不起作用。

% for post in posts %
    % for post_image in post.post_image_set.all %
        post_image.image.url
    % endfor %
% endfor %

我做错了什么?

这是我的views.py 文件。 视图.py

# Create your views here.
def index(request):
    posts=Post.objects.filter(approved=True).order_by('-published_date')
    context = "posts":posts
    return render(request, 'post/home.html',context)

【问题讨论】:

你能分享你的views.py文件吗? 我已经编辑了我的问题。我在下面添加了它们 【参考方案1】:

外键关系的默认相关名称是模型的名称 (PostImage),但在您的 for 循环模板中,您将其称为 post_image Following relationships “backward”

改变

% for post_image in post.post_image_set.all %

进入

% for post_image in post.postimage_set.all %

模板代码(有变化)

% for post in posts %
    % for post_image in post.postimage_set.all %
        post_image.image.url
    % endfor %
% endfor %

【讨论】:

以上是关于如何获取与传递给 Django 模板的查询集相关的查询集对象的主要内容,如果未能解决你的问题,请参考以下文章

Django:获取相关对象的相关对象并传递给模板

Django Rest 框架:将查询集传递给 Response()

如何比较 Django 模板中的两个查询集?

Django - UpdateView ModelForm 在查询集字段上设置初始值

Django如何在查询集中标记用户特定的对象以发送到模板?

如何通过django中的多级反向外键获取相关对象查询集?