Python/Django - 在 for 标记中获取 ManyToManyField 的值
Posted
技术标签:
【中文标题】Python/Django - 在 for 标记中获取 ManyToManyField 的值【英文标题】:Python/Django - Get value of a ManyToManyField in a for tag 【发布时间】:2016-08-03 00:33:58 【问题描述】:当我将 % for %
与 Article 类一起使用时,我无法获取图像相关值。我尝试使用 select_related,但我不知道如何定义图像以正确显示在我的<img />
标签的src=""
属性中
有没有一种干净的方法可以让我按照我的意愿出现?
models.py
class Image(models.Model):
gallery = models.ManyToManyField(Gallery)
name = models.CharField(max_length=100)
image = models.ImageField(upload_to='static/images/gallery')
def __str__(self):
return self.name
class Article(models.Model):
section = models.ForeignKey(Menu)
title = models.CharField(max_length=100)
text = models.TextField()
type = models.ForeignKey(Type)
image = models.ManyToManyField(Image)
def __str__(self):
return self.title
views.py
def index(request):
slider = Article.objects.all()
images = Image.objects.all()
return render(request, 'cms/index.html', locals())
模板
% for i in slider %
<li>
<img src="i.image" />
<h2>i.title</h2>
<p>i.text, i.image_url</p>
</li>
% endfor %
【问题讨论】:
检查一下,***.com/questions/17846290/django-display-imagefield 感谢您的回答。这不是关于如何显示图像,而是更多关于如何在我的循环中获取另一个类的内容。 请检查答案。 【参考方案1】:Article.image
是一个多对多字段。您要显示哪个图像?首先?
<img src="i.image.all.0.image.url" />
全部?
% for im in i.image.all %
<img src="im.image.url" />
% endfor %
【讨论】:
我正在尝试显示一些与循环相对应的文章。在这个循环中,我想显示与文章相关的图像。但是图像属于不同的类别。那怎么办? 您不需要其他课程。您需要的一切都在image
字段中。 image
字段是一个 QuerySet
,其中包含所有相关图像。【参考方案2】:
您必须使用 2 个 forloop 来在多张表中显示图像。
% for i in slider %
<li>
% for im in i.image.all %
<img src="im.image.url" />
% endfor %
<h2>i.title</h2>
<p>i.text, i.image_url</p>
</li>
% endfor %
【讨论】:
谢谢,完美解决!因此,如果我在第二个 forloop 中调用.all
,它将存储循环内的所有字段以调用它们?以上是关于Python/Django - 在 for 标记中获取 ManyToManyField 的值的主要内容,如果未能解决你的问题,请参考以下文章
Python / Django / Jinja2:如何用另一个变量的值扩展变量名(例如在 for 循环中)?
Python Django - 模型:查询/过滤器中的 for 循环
python测试开发django-189.安装celery==3.1.26.post2版本报错No matching distribution found for anyjson>=0.3.3