Как получить разные данные в одном шаблоне? (django)

Сценарий моего проекта - Есть различные примеры, каждый пример имеет различные части, которые будут отображаться в аккордеонах, сейчас я разработал базу данных и генерирую динамические аккордеоны в зависимости от количества моих записей данных.

Каждая

часть (аккордеон) имеет две колонки, первая колонка для текстовых данных, вторая колонка для медиа данных. Каждая часть имеет различный формат данных, как получить данные в этот единый шаблон?

МОДЕЛИ

# Create your models here.
class CaseStudy_List(models.Model):
    CaseStudy_id = models.IntegerField(primary_key=True)
    title = models.CharField(max_length=255)
    
    def __str__(self):
        return self.title

class CaseStudy_Parts(models.Model):   #accordians
    case_study = models.ForeignKey(CaseStudy_List, on_delete=models.CASCADE)
    CaseStudy_part_id = models.AutoField(primary_key=True)
    CaseStudy_order = models.IntegerField(default="")
    CaseStudy_title_accordian = models.CharField(max_length=255)
    
    
    def __str__(self):
        return self.CaseStudy_title_accordian

class CaseStudy_Content(models.Model):   #column 1 - text area
    case_study_part = models.ForeignKey(CaseStudy_Parts, on_delete=models.CASCADE,  null=True)
    content_title = models.CharField(max_length=255, default="")
    content_text = models.TextField(blank=True)
    content_link = models.TextField(blank=True)
    
    def __str__(self):
        return self.content_title

class CaseStudy_Media(models.Model):    #column 2 - Media Area
    case_study_part = models.ForeignKey(CaseStudy_Parts, on_delete=models.CASCADE,  null=True)
    # case_study = models.ForeignKey(CaseStudy_List, on_delete=models.CASCADE)
    content_img = models.ImageField(upload_to='casestudy/images', default="")
    

class CaseStudy_Buttons(models.Model):
    content = models.ForeignKey(CaseStudy_Content, on_delete=models.CASCADE)
    button_id = models.CharField(max_length=255)
    button_label = models.CharField(max_length=255)

ПРОСМОТРОВ

def casestudy(request, CaseStudy_id ):
    casestudy_object = get_object_or_404(CaseStudy_List, CaseStudy_id = CaseStudy_id) #for list
    casestudy_parts_obj = CaseStudy_Parts.objects.filter(case_study=casestudy_object).order_by('CaseStudy_order').distinct()  #for accordians
    
    parts_data = []  #storing in a singlist to avoid duplicacy 
    for part in casestudy_parts_obj:
        part_content = CaseStudy_Content.objects.filter(case_study_part = part)
        part_media = CaseStudy_Media.objects.filter(case_study_part = part)
        parts_data.append({
            'part': part,
            'content': part_content,
            'media': part_media
        })

    context = {
        'casestudy_object': casestudy_object,
        'parts_data': parts_data,
    }
    return render(request, 'casestudy.html', context)
    

HTML

<div class="page-layout">
    <div class="accordion" id="accordionPanelsStayOpenExample">
      {% for part_data in parts_data %}
      <div class="accordion-item">
        <h6 class="accordion-header" id="heading{{ part_data.part.CaseStudy_part_id  }}">
          <button class="accordion-button {% if not forloop.first %}collapsed{% endif %}" type="button"
            data-bs-toggle="collapse" data-bs-target="#collapse{{ part_data.part.CaseStudy_part_id  }}"
            aria-expanded="{% if forloop.first %}true{% else %}false{% endif %}"
            aria-controls="collapse{{ part_data.part.CaseStudy_part_id  }}">
            {{ part_data.part.CaseStudy_title_accordian }}
          </button>
        </h6>
        <!-- <div id="panelsStayOpen-{{ part_data.part.CaseStudy_part_id  }}" class="accordion-collapse collapse show"> -->
        <div id="collapse{{ part_data.part.CaseStudy_part_id  }}"
          class="accordion-collapse collapse {% if forloop.first %}show{% endif %}"
          aria-labelledby="heading{{ part_data.part.CaseStudy_part_id  }}">
          <div class="accordion-body">
            <div class="container-area">
              <div class="col-content">
                <div class='introduction-content'>
                  <h3>CASESTUDY ID - {{casestudy_object.CaseStudy_id}} </h3><br>
                  <h3>TITLE - {{ casestudy_object.title }} </h3> <br>

                  {% for content in part_data.content %}
                  <h3>OBJECTIVE - {{ content.content_text|safe }}</h3>
                  {% endfor %}
                </div>
              </div>
              <div class="col-data">


                <img src="{{media.content_img.url}}">

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

ПОЖАЛУЙСТА, ПОМОГИТЕ, СПАСИБО...

Я спрашиваю о своих сомнениях здесь, на stackoverflow, и я так благодарен всем вам, спасибо вам большое.

Вернуться на верх