我正在尝试创建一个单独的Image模型,以将我的所有图片保存为Articles模型。 我已经用我的Article模型的外键创建了Image Model。
这样做之后,我被困住了,我试图获取要为相关文章渲染的每篇文章的图片,但是我没有取得任何进展。有空余时间来帮助您的人吗?
谢谢!!!
我的观点:
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")
谢谢堆积!!
答案 0 :(得分:0)
您已将ArticleImage的related_name
定义为“ Images”,但是您尝试通过模板中的article.article_image
访问该关系。访问文章图片的正确方法是通过article.Images.image
但是,因为您将图像的关系指定为外键,所以ArticleImage只能有一个Article,但是一个Article可以有多个图像。 (所谓的多对一关系)。您应该将ArticleImage中的ForeignKey更改为OneToOneField
。
但是,由于ArticleImage是与Article的OneToOne关系,为什么不直接在文章上设置image
字段呢?
此外,您不应大写related_name 'Images'
,如果它是一对一字段,请考虑将其更改为单数'image'
。