Как в джанго вывести сложную модель даных?

У меня есть 3 связных (1 модель связана с 2 моделью, а 2 модель с 3 моделью) модели:

class languages(models.Model):
    language = models.CharField('описание', max_length=1000, db_index=True)
class directorys(models.Model):
    language = models.ForeignKey(languages, on_delete = models.CASCADE, verbose_name='Язык')
    description = models.CharField('описание', max_length=1000, db_index=True)
class file_directory(models.Model):
    directory = models.ForeignKey(directorys, on_delete = models.CASCADE, verbose_name='Католог')
    description = models.CharField('описание', max_length=1000, db_index=True)

Как их можно вывести Я пробовал через батарейку django-mptt, но почитав документацию, понял, что он не может так выводить


Ответы (1 шт):

Автор решения: user355827

ну если имелось ввиду все на одной странице то как-то так views.py

from .models import  languages

def lang(request):
    all_lang = languages.objects.all()
    return render(request, 'имя_вашего_приложения/lang.html', {'all_lang': all_lang })

и в шаблоне lang.html

{% extends 'base.html' %} 
{% block title %} Название_страницы {% endblock %}
{% block content %}

{% for a in all_lang %}
    <h1>{{a.language}}</h1>
        {% for b in a.directorys_set.all %}
            <ul>{{b.description}}</ul>
                    {% for c in b.file_directory_set.all %}
                        <li>{{c.description}}</li>
                    {% endfor %}
        {% endfor %}
 {% endfor %}
 {% endblock %}

К связанным моделям обращаются через ключевое слово _set читайте официальную документацию Ну и наверное, все же поля разных моделей стоит называть по разному, а то потом возникнет путаница, где какое

→ Ссылка