Как сформировать в админке перечень подкаталогов в зависимости от выбранного каталога?

В Django вы можете легко настроить административный интерфейс для вашего веб-приложения, используя Django Admin. Если вы хотите сформировать динамический перечень подкаталогов в зависимости от выбранного каталога, вам потребуется настроить правильные модели и связи в вашем приложении.

Предположим, у вас есть модель Catalog (каталог) и Subcatalog (подкаталог), и они связаны между собой отношением "один ко многим", где один каталог может иметь несколько подкаталогов. Вот пример такой модели:

from django.db import models

class Catalog(models.Model):
    name = models.CharField(max_length=100)

class Subcatalog(models.Model):
    name = models.CharField(max_length=100)
    catalog = models.ForeignKey(Catalog, on_delete=models.CASCADE)

Чтобы административный интерфейс позволял выбирать каталог и отображал только соответствующие подкаталоги, вам потребуется настроить связанные поля и отображение формы администратора.

from django.contrib import admin
from .models import Catalog, Subcatalog

class SubcatalogInline(admin.StackedInline):
    model = Subcatalog
    extra = 0

class CatalogAdmin(admin.ModelAdmin):
    inlines = [SubcatalogInline]

admin.site.register(Catalog, CatalogAdmin)

В этом примере мы создаем класс SubcatalogInline, который указывает, что в административном интерфейсе для модели Catalog будет отображаться встроенная форма для связанных подкаталогов. Мы добавляем это в поле inlines в классе CatalogAdmin, который затем регистрируется с помощью admin.site.register для модели Catalog.

После этого в административном интерфейсе Django вы увидите форму для добавления и редактирования каталога, которая будет содержать встроенную форму для указания подкаталогов. Вы сможете выбирать каталог и добавлять или изменять соответствующие подкаталоги.

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

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