Как в джанго вывести сложную модель даных?
У меня есть 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
читайте официальную документацию
Ну и наверное, все же поля разных моделей стоит называть по разному, а то потом возникнет путаница, где какое