Джанго - Доступ к изображениям из поля внешнего ключа - PullRequest
1 голос
/ 26 сентября 2019

Я пытаюсь создать отдельную модель изображения, чтобы сохранить все мои фотографии для модели статей.Я создал модель изображения с внешним ключом к моей модели Article.

После этого я застрял, я пытаюсь получить изображения для каждой статьи для соответствующей статьи, но я 'Я не делаю никакого прогресса.Кто-нибудь, у кого есть несколько свободных минут, чтобы помочь?

Спасибо !!!

мой взгляд:

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")

Спасибо, стек !!

1 Ответ

0 голосов
/ 26 сентября 2019

Вы определили ArticleImage's related_name как 'Изображения', но вы пытаетесь получить доступ к этому отношению через article.article_image в вашем шаблоне.Правильный способ доступа к изображениям статьи - через article.Images.image

Однако, поскольку вы указали отношение изображения как ForeignKey, у ArticleImage может быть только одна статья, но одна статья может иметь несколько изображений.(так называемые отношения многие-к-одному).Вы должны изменить ForeignKey в ArticleImage на OneToOneField.Но, поскольку ArticleImage является отношением OneToOne к Article, почему бы не установить поле image непосредственно на статью?

Кроме того, вам не следует использовать прописное имя related_name 'Images', и если оно однозначноодно поле, рассмотрите возможность замены на единственное число 'image'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...