Установите pk = pk в Django - PullRequest
       14

Установите pk = pk в Django

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

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

Мой шаблон в индексе. html:

{% for PostSection in postsections %}
    <section id="posts">

      <a id="posts-header" href="#">
        <h2>{{ PostSection.section_heading }}</h2>
        <img src="{% static 'main/img/icn/down-arrow.svg' %}" alt="">
      </a>
      <h1 class="hello-posts">{{ PostSection.section_desc }}</h1>

      <div class="swiper-container swiper2">
        <div class="swiper-wrapper">

          {% for Post in posts %}
          <div class="swiper-slide" id="posts-slide">
            <a href="posts/arch01.html">

              <img src="{{ Post.post_img.url }}" alt="{{ Post.post_desc }}">

              <div class="slide-posts-txt">
                <h5>{{ Post.post_heading }}</h5>
                <div class="slide-posts-txt-desc">
                  <p>{{ Post.post_desc }}...</p><img src="{% static 'main/img/icn/plus-circle.svg' %}" id="read-more-plus" alt="">
                </div>
              </div>

            </a>
          </div>
          {% endfor %}

        </div>
        <div class="swiper-button-next swiper-button-next2" id="next"><p>Next</p></div>
        <div class="swiper-button-prev swiper-button-prev2" id="prev"><p>Previous</p></div>
      </div>

    </section>
    {% endfor %} 

Мои модели.py:

class PostSection(models.Model):
    section_heading = models.CharField(max_length=30)
    section_desc = models.CharField(max_length=300, blank=True, null=True)

    def __str__(self):
        return f"{self.section_heading}"

class Post(models.Model):
    post_section = models.ForeignKey(PostSection, on_delete=models.CASCADE, related_name="posts")
    post_heading = models.CharField(max_length=30)
    post_desc = models.CharField(max_length=300, blank=True, null=True)
    post_img = models.ImageField(upload_to= 'architecture', blank=True, null=True)

    def __str__(self):
        return f"{self.id} - {self.post_heading} - {self.post_desc}"

Мои просмотры. py:

def index(request):
    context = {
        "postsections": PostSection.objects.all(),
        "posts": PostSection.objects.get(pk=1).posts.all()
    }
    return render(request, "main/index.html", context)

В представлениях я бы хотел, чтобы pk равнялось pk (pk модели PostSection), чтобы в каждом разделе отображались только сообщения, которые находятся внутри PostSection. Но если я сделаю это, это не сработает, это сработает только тогда, когда pk равно некоторому числу и каждый раздел отображает одинаковые записи. Что я могу сделать, чтобы по-прежнему использовать свой индекс. html шаблон?

Спасибо!

...