Показать поля, проходящие через поле ManyToMany django admin

Я работаю над проектом, разработанным на Python 2.7 и Django 1.11.
Я пытаюсь показать на странице администратора два поля, проходящих через поле ManyToMany.

Вот модели:

class ModelZero(Model):
    # some fields
    mtm_field = models.ManyToManyField(to="ModelOne", through="ModelTwo")

class ModelOne(Model):
    # some fields
    field_1_1 = models.CharField(unique=True, max_length=200)
    field_1_2 = models.BooleanField(default=True)

class ModelTwo(Model):
    # some fields
    field_2_1 = models.ForeignKey('ModelOne', on_delete=models.CASCADE)
    field_2_2 = models.BooleanField(default=True)

На странице администрирования ModelZero я хочу показать некоторые поля из самой ModelZero плюс поле_2_1 и поле_2_2 из ModelTwo.
Более подробно, поле_2_1 должно присутствовать с помощью пользовательского виджета.
Обратите внимание, что ModelZeroAdmin является инлайновым.

Вот страница администратора:

class ModelZeroAdmin(DynamicRawIDMixin, admin.TabularInline):
    model = ModelZero
    fields = ('some', 'fields', 'field_2_2')
    form = forms.ModelZeroForm

    def field_2_2(self, obj):
        return obj.mtm_field.through.field_2_2

Вот форма:

class ModelZeroForm(ModelForm):
    class Meta:
        widgets = {
            "mtm_field.through.field_2_1": dal.autocomplete.ModelSelect2Multiple(
                url="my-autocomplete-url"
            )
        }

Таким образом, у меня возникли две ошибки:

  1. it's not possible add custom fields (field_2_2) in the fields tuple
  2. custom widget is not showed

Есть ли способ достичь этой цели, используя данную структуру моделей?

У меня нет опыта работы со старой версией Django, но если я не ошибаюсь, синтаксис для связанного поля в интерфейсе администратора был примерно таким :mtm_field__field_2_2.

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