Для того чтобы реализовать вложенность TabularInline в Django admin, нужно использовать параметр inlines
в административной части Django. Например, у нас есть модели ParentModel
, ChildModel
и GrandChildModel
, и нам нужно отобразить их в административной панели Django с вложенными TabularInline. Давайте рассмотрим пошагово, как это сделать:
1. Создадим модели ParentModel
, ChildModel
и GrandChildModel
в файле models.py
:
from django.db import models class ParentModel(models.Model): name = models.CharField(max_length=100) class ChildModel(models.Model): parent = models.ForeignKey(ParentModel, on_delete=models.CASCADE) name = models.CharField(max_length=100) class GrandChildModel(models.Model): child = models.ForeignKey(ChildModel, on_delete=models.CASCADE) name = models.CharField(max_length=100)
2. Теперь создадим административные классы для этих моделей в файле admin.py
:
from django.contrib import admin from .models import ParentModel, ChildModel, GrandChildModel class GrandChildInline(admin.TabularInline): model = GrandChildModel class ChildInline(admin.TabularInline): model = ChildModel inlines = [GrandChildInline] @admin.register(ParentModel) class ParentModelAdmin(admin.ModelAdmin): inlines = [ChildInline] @admin.register(ChildModel) class ChildModelAdmin(admin.ModelAdmin): inlines = [GrandChildInline]
3. Теперь зарегистрируем эти административные классы в административной панели Django:
admin.site.register(ParentModel, ParentModelAdmin) admin.site.register(ChildModel, ChildModelAdmin) admin.site.register(GrandChildModel)
После выполнения вышеперечисленных шагов, в административной панели Django вы увидите ParentModel
, у которого есть вложенный ChildModel
, который, в свою очередь, имеет вложенный GrandChildModel
.
Это позволит вам отображать и управлять вложенными моделями прямо из административной панели Django, что обеспечит удобство использования и навигации по вашим данным.