【发布时间】:2020-01-26 15:56:22
【问题描述】:
我正在尝试制作一个单独的 Image 模型来保存我的所有图片以用于 Articles 模型。 我已经使用我的文章模型的外键创建了图像模型。
这样做之后,我被卡住了,我试图让每篇文章的图片为相关文章渲染,但我没有取得任何进展。有人有空来帮忙吗?
谢谢!!!
我的看法:
class ArticlesView(generic.ListView):
context_object_name = 'latest_article_list'
template_name = 'news/articles.html'
paginate_by = 5
def get_context_data(self, **kwargs):
context = super(ArticlesView, self).get_context_data(**kwargs)
context['categories'] = Category.objects.all()
return context
def get_queryset(self):
category_pk = self.request.GET.get('pk', None)
if category_pk:
return Article.objects.filter(article_category__pk=category_pk).order_by("-pub_date")
return Article.objects.order_by("-pub_date")
我的模型:
class Article(models.Model):
title = models.CharField('title', max_length=200, blank=True)
slug = AutoSlugField(populate_from='title', default="",
always_update=True, unique=True)
author = models.CharField('Author', max_length=200, default="")
description = models.TextField('Description', default="")
is_published = models.BooleanField(default=False)
article_text = models.TextField('Article text', default="")
pub_date = models.DateTimeField(default=datetime.now, blank=True)
article_category = models.ForeignKey(Category, on_delete="models.CASCADE", default="")
def __str__(self):
return self.title
class ArticleImages(models.Model):
article = models.ForeignKey(Article, on_delete="models.CASCADE", related_name="Images")
image = models.ImageField("Image")
谢谢堆栈!!
【问题讨论】:
-
您在模板中使用了
{{ article.article_image.url }},但您的模型Article没有任何名为article_image的字段。当前从图像到文章的related_name是Images+ 这是一个OneToMany 关系,因此在您的模板中,您必须遍历图像才能显示它们,因为您可以拥有多个图像。 -
我的错,我只是改变了模型,我原来的文章字段有6个图像模型,然后我决定做一个图像模型,这就是为什么你看到旧的字段。模板实际上根本不重要,我只是想弄清楚如何从 Image 模型中获取图像并将它们包含在我的模板中。我将删除 html。
标签: django django-models model