【发布时间】:2020-10-07 18:58:21
【问题描述】:
我正在尝试建立一个投资组合网站,我的想法是拥有一个包含多个图像实例的“项目”模型。我认为我能够通过使用“ManyToManyField”关系来实现这一点。
class Image(models.Model):
image = models.ImageField(upload_to='media/')
class Project(models.Model):
title = models.CharField(max_length=32)
description = models.TextField(default='', null=False)
stack = models.TextField(default='', null=False)
image = models.ManyToManyField(Image, related_name='images')
def __str__(self):
return self.title
由于稍微弄乱了查询 API,我已经能够检索图像的查询集,但我不确定如何将这些查询集与他们的项目保持关联并将它们提供给我的视图的上下文。我已经为我的 Projects 模型传入了 all() 查询(这很棒),但我也想访问图像。
基本上,我希望我的 HTML 模板最终看起来像这样:
{% for project in projects %}
<div class="card mx-auto" style="width: 50rem;">
<img class="card-img-top" src="{{ project.images }}" alt=""> // Issue here
<div class="card-body">
<p>{{ project }}</p>
<h5 class="card-title">{{project.title}}</h5>
<p class="card-text">{{project.description}}</p>
<p class="card-text">{{project.stack}}</p>
</div>
</div>
{% endfor %}
这是视图:
def portfolio_view(request, *args, **kwargs):
p = Project.objects.all()
for project in p:
print('title: ', project.title)
print('description: ', project.description)
print('stack: ', project.stack)
print('images: ', project.image.all())
context = {
'projects': Project.objects.all(),
}
return render(request, 'main/portfolio.html', context)
上下文对象之上的任何东西都只是来自测试。
任何帮助将不胜感激!非常感谢!
【问题讨论】:
标签: django django-models django-views