Django admin mptt: как показать TreeNodeChoiceField вместо ModelChoiceField при добавлении/изменении с помощью FK

Я работаю над приложением для django, которое включает некоторые модели деревьев на основе mptt.

У меня есть такие модели (упрощенные):

class Asset_Type(MPTTModel):
    parent = TreeForeignKey('self', on_delete=models.CASCADE, blank=True, null=True, related_name='children', verbose_name='Parent')
    name = models.CharField(max_length=64, unique=True, verbose_name='Asset Type Name')

class Asset(models.Model):
    name = models.CharField(max_length=64, unique=True, verbose_name='Asset Name')
    type = models.ForeignKey(Asset_Type, on_delete=models.CASCADE, blank=False, null=False)

У меня объявлены такие классы администраторов (упрощенно):

class Asset_TypeAdmin(DraggableMPTTAdmin):
    mptt_level_indent = 20
admin.site.register(models.Asset_Type, Asset_TypeAdmin)

class AssetAdmin(admin.ModelAdmin):
    list_display = ['name','type']
    list_display_links = ['name']
admin.site.register(models.Asset, AssetAdmin)

Все работает почти идеально, кроме этого:

Когда я добавляю новый актив, я получаю шаблон/форму с выпадающим списком, где я могу выбрать Asset_Type. Проблема в том, что выпадающий список имеет класс ModelChoiceField, поэтому он не показывает иерархию дерева. В выпадающем списке отображается следующее:

---------
Root 1
Child 1.1
Child 1.1.1
Root 2
Child 2.1
Child 2.1.1

Я бы хотел, чтобы это был класс TreeNodeChoiceField, чтобы он показывал следующее:

Root 1
--- Child 1.1
------ Child 1.1.1
Root 2
--- Child 2.1
------ Child 2.1.1

Я нашел информацию, связанную с этим здесь: https://django-mptt.readthedocs.io/en/latest/forms.html#id4, но, честно говоря, я понятия не имею, как/где я должен сказать django, что поле для использования в форме добавления/изменения должно быть TreeNodeChoiceField. Я успешно переопределил шаблон change_form.html для админки для класса assets моего приложения (создав ./project/app/templates/admin/app/asset/change_form.html), но я не могу найти, где указать в этом файле (или где-либо еще), какое поле использовать

Вернуться на верх