Html Django用于post渲染的多个图像
在过去的几天里,我一直在尝试让管理员用户为每一篇文章上传多张图片/幻灯片,我想到的一个想法是在文章的For循环中嵌套一个For循环,对于每一篇文章,也渲染与之相关的每一张图片,但似乎我做得不太对Html Django用于post渲染的多个图像,html,django,django-models,rendering,Html,Django,Django Models,Rendering,在过去的几天里,我一直在尝试让管理员用户为每一篇文章上传多张图片/幻灯片,我想到的一个想法是在文章的For循环中嵌套一个For循环,对于每一篇文章,也渲染与之相关的每一张图片,但似乎我做得不太对 class Post(models.Model): title = models.CharField(max_length = 128) image = models.ImageField(default = 'default.jpg', upload_to = 'post_pics')
class Post(models.Model):
title = models.CharField(max_length = 128)
image = models.ImageField(default = 'default.jpg', upload_to = 'post_pics')
content = models.TextField()
date_posted = models.DateTimeField(default = timezone.now)
category = models.ForeignKey(Category, on_delete = models.CASCADE)
def __str__(self):
return f"{self.title} - {self.category}"
def get_image_filename(instance, filename):
title = instance.post.title
slug = slugify(title)
return "post_images/%s-%s" % (slug, filename)
class Images(models.Model):
post = models.ForeignKey(Post, default= None, on_delete = models.CASCADE, related_name= 'Images')
image = models.ImageField( upload_to = get_image_filename, verbose_name = 'Images')
def __str__(self):
return f"imazh per {self.post}"
和我的Html:
{posts%%中的post为%s}
{{post.content}}
{{发布日期{发布日期:“F d,Y”}
{%endfor%}
APost
将有一个相关的集合,您称之为反向关系
默认情况下,django将在Post
实例images\u集
上建立关系,因为它在关系上采用您的模型名称并添加\u集
您还可以通过在FK字段上设置related_name
属性来选择自己的相关名称。()
这里有一个例子
类映射(models.Model):
members=models.ManyToManyField(
用户,
相关的_name='maps',
详细名称=(成员)
)
#反向关系:
User.maps.all()
或者在python中使用您的模型
post=post.objects.first()
打印(f“post{post.title}中的图像”)
对于post.images\u set.all()中的图像:
打印(image.url)
因此,如果没有自定义的相关的\u名称
,您的模板循环将类似于
{% for image in post.images_set.all %}
<img src="{{ image.url }}">
{% empty %}
<p>No images found</p>
{% endfor %}
{%用于post.images\u set.all%}
{%empty%}
没有找到图像
{%endfor%}
谢谢您的帮助,非常感谢。