Показать поля, проходящие через поле 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"
)
}
Таким образом, у меня возникли две ошибки:
- it's not possible add custom fields (field_2_2) in the fields tuple
- custom widget is not showed
Есть ли способ достичь этой цели, используя данную структуру моделей?
У меня нет опыта работы со старой версией Django, но если я не ошибаюсь, синтаксис для связанного поля в интерфейсе администратора был примерно таким :mtm_field__field_2_2
.