Django табличный встроенный дисплей - PullRequest
2 голосов
/ 01 апреля 2012

Можно ли изменить отображение строк, чтобы изменить его на this ? Я думал об изменении файла шаблона администратора "tabular.html", это будет возможно, или я должен изменить что-то еще?

Обновление

Хорошо, я пытался редактировать tabular.html, но моего опыта работы с Django недостаточно, чтобы понять, как / где внести необходимые изменения ... Любая подсказка, с чего мне начать? Разве я не должен изменить CSS также? Я предполагаю, что {{field.field}} автоматически отображает выпадающее меню (по умолчанию для администратора Django), если я правильно понимаю ...

Обновление 2

Мне удалось изменить второй столбец так, как мне хотелось, но я думаю, что для первого столбца будет сложнее ... Текущий статус

Обновление 3

Один из способов, который, на мой взгляд, сработает, состоит в том, чтобы отобразить на каждой из строк только одну из опций первого поля, а затем отключить «добавить еще одну опцию». Как я могу перебрать опции в "tabular.html"?

Обновление 4

Полагаю, здесь нужно сделать трюк ... Как я могу перебрать выбор полей, чтобы отобразить только один выбор в строке?

{% for fieldset in inline_admin_form %}
          {% for line in fieldset %}
            {% for field in line %}
            {{ field.get_choices_display }}
              <td class="{{ field.field.name }}">
              {% if field.is_readonly %}
                  <p>{{ field.contents }}</p>
              {% else %}
                  {{ field.field.errors.as_ul }}
                  {{ field.field }}
              {% endif %}
              </td>
            {% endfor %}
          {% endfor %}
        {% endfor %}

1 Ответ

4 голосов
/ 01 апреля 2012

Да, вы можете изменить template вашего экземпляра InlineModelAdmin на ваш настроенный шаблон, например customized_inline.html.Просто скопируйте django / django / contrib / admin / templates / admin / edit_inline / tabular.html в custom_inline.html в путь к шаблону как начальный.

edit

Возможно, я неправильно понял.Если вы хотите изменить стиль рендеринга поля формы, обычным способом будет изменить его widget .В Django ModelAdmin и InlineModelAdmin основные способы настройки виджета поля заключаются в методе BaseModelAdmin.formfield_for_dbfield внутри django/contrib/admin/options.py, чтении кода и doc , когда вы хотите изменить виджет поля формы.

Для полей, имеющих выбор, вы можете просто установить radio_fields в экземпляре ModelAdmin / InlineModelAdmin, чтобы визуализировать поле в качестве радио-выбора вместо раскрывающегося списка.

Кроме того, используйте OneToOneField вместоForeignKey или установите extra и max_num в вашем экземпляре InlineModelAdmin, чтобы администратор не мог отображать несколько строк в строке, например:

class SomeInlineAdmin(admin.TabularInline):
    model = Foo
    extra = 1
    max_num = 1

Я не могу открыть вторую ссылку, вы можете опубликовать что-либо в вопросевместо использования внешней ссылки.

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