Django Как сделать чтоб у TabularInline был вложенный TabularInline?

Для того чтобы реализовать вложенность 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, что обеспечит удобство использования и навигации по вашим данным.