【问题标题】:Django _set.all in template with one to many relationship模板中的 Django _set.all 具有一对多关系
【发布时间】:2021-02-23 23:16:42
【问题描述】:

我正在尝试输出一个包含许多博客文章的网页,每个文章都可能包含许多图像。

模型.py:

class FreeImage(models.Model):
    f_img = models.ImageField(null=True, blank=True, upload_to="img/f")
    f_img_alt = models.CharField(max_length=100, blank=True, null=True)
    post = models.ForeignKey('Post', on_delete=models.SET_NULL, null=True)

class Post(models.Model):
    title = models.CharField(max_length=100, unique=True)
    

Views.py:

def home_view(request):
    posts = Post.objects.order_by('-id')
    freeimgs = FreeImage.objects.filter(post__in=posts)
    context = {
    'posts':posts,
    'freeimgs' :freeimgs,}
    return render(request, 'home.html', context)

模板:

{% extends 'base.html' %}
{% block main %}

{% for post in posts%}
  <h3>{{post.title}}</h3>
  {% for i in freeimgs.post_set.all %}
     <h5>Test</h5>
     <img src="{{ freeimage.f_img.url }}" alt="{{freeimage.f_img_alt}}">
  {% endfor %}
{% endfor %}

{% endblock %}

freeimgs.post_set.all 在这里不返回任何内容。我不知道我还能如何在模板中显示与正确帖子相对应的图像。

【问题讨论】:

    标签: django django-views django-templates


    【解决方案1】:

    你有从 Post 到 FreeImage 的反向访问器,而不是其他方式

      {% for free_image in post.freeimage_set.all %}
         <h5>Test</h5>
         <img src="{{ free_image.f_img.url }}" alt="{{ free_image.f_img_alt}}">
      {% endfor %}
    

    【讨论】:

      猜你喜欢
      • 2014-05-20
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 2014-05-16
      • 2015-11-16
      • 2020-04-05
      • 2022-01-11
      • 2013-11-05
      相关资源
      最近更新 更多