Что не так с моим вложенным в Loop в шаблоне Django? - PullRequest
0 голосов
/ 19 апреля 2019

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

Модель:

    class Post(models.Model):
        Post_Title = models.CharField(max_length=200)
        Post_pub_date = models.DateField('date published')
        Post_Author = models.CharField(max_length=100)
        Post_Text = models.TextField()
        def __str__(self):
            return self.Post_Title

    class Picture(models.Model):
        Post = models.ForeignKey(Post, on_delete=models.CASCADE)
        Picture = models.ImageField()
        Picture_Name = models.CharField(max_length=100, null=True, blank=True)
        def __str__(self):
            return self.Picture_Name

Просмотров:

    class PostView(generic.ListView):
        template_name = 'myblog/index.html'
        context_object_name = 'Post_List'

        def get_queryset(self):
            """
            Returns Posts
            """
            return Post.objects.order_by('-Post_pub_date')

Шаблон:

    {% for Post in Post_List %}
      <h1 class="mb-4">{{Post.Post_Title}}</h1>
      <span class="category">{{Post.Post_Author}}</span>
      <span class="mr-2">{{Post.Post_pub_date}}</span> 
      <div class="post-content-body"><p>{{Post.Post_Text}}</p>

      {% for Picture in Post.Picture_set.all %}
        <div class="col-md-12 mb-4 element-animate">
          <h2>{{Picture.Picture_Name}}</h2>
          <img class="col-md-12 mb-4 element-animate" src="{{ MEDIA_URL }}{Picture.Picture}}">
        </div>  
      {% endfor %}
      </div>
    {% endfor %}

Post_Title, Post_Author, Post_pub_date и Post_Text отображаются нормально. Просто вложенный цикл For не создает никакого Picture_Name или Picture, как если бы Picture_set.all был пуст.

Как уже упоминалось выше, я пытался найти свою ошибку в разных сообщениях, таких как this , но не смог ее найти.

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

После обратной связи вам необходимо написать связанное название модели из маленькой буквы, даже если название модели начинается с большой буквы:

{% for Picture in Post.picture_set.all %}

Вот как это работает в оболочке Django, и я предполагаю, что в шаблонах это то же самое.

0 голосов
/ 19 апреля 2019

Проблема не во вложенном цикле for, а в представлении. Он только возвращает запрос к вашей публикации, вы не передаете фотографии в шаблон.

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