Как я могу создать пользовательский шаблон для набора форм администратора TabularInline в Django? - PullRequest
0 голосов
/ 09 мая 2018

В моем приложении Django (исследовательская база данных) при изменении объекта персонажа в администраторе я бы хотел, чтобы все источники этого человека были указаны в виде гиперссылок на файл для этого источника. Я пытаюсь сделать это, создав собственный шаблон для встроенного в стек. Вот пользовательский шаблон до сих пор:

<p>Testing</p>

{% for form in inline_admin_formset %}
    {% for fieldset in form %} 
        <h5>Fieldset</h5>
        {% if fieldset.name %} <h2>{{ fieldset.name }}</h2>{% endif %}
        {% for line in fieldset %} 
            <h6>Line</h6>
            {% for field in line %} 
                <h6>Field</h6>
                {{ field.field }}       
            {% endfor %}
        {% endfor %}
    {% endfor %} 
{% endfor %}

Многое из этого только для меня, чтобы увидеть, что происходит. В качестве руководства я использовал ссылки здесь и здесь . От {{ field.field }} отрисовывается то, что вы ожидаете от встроенного элемента - выпадающего меню с именами источников в качестве вариантов выбора и некоторыми значками для добавления / изменения.

For clarity.

Однако я действительно хочу просто указать имя источника в виде гиперссылки. Как я могу получить имя источника (фактическое имя атрибута source_name) из того, что у меня есть на языке шаблонов Django (то есть объект "поле")?

1 Ответ

0 голосов
/ 09 мая 2018

В этом контексте {{ field.field }} является объектом BoundField, и метод значения, вероятно, является тем, что вы хотели бы использовать, как в {{ field.field.value }}.

Более Django-иш подход (и более сложный) может включать создание собственного виджета (начните с подкласса одной из их встроенных ), который отображает только текст, а затем подключить его к форме используется в ModelAdmin для вашей модели. Я думаю, что там есть небольшая кроличья нора с точки зрения необходимости подкласса BaseInlineFormset и, возможно, нескольких других в этой цепочке ... Я вижу, что у класса BaseFormSet есть атрибут .form, на который есть ссылка в его construct_form метод, но оттуда все немного мутно.

Может быть также полезно проверить эту прошлую тему: Переопределить форму в Django admin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...