2013-09-11 3 views
5

Я две таблицы, связанные Quiz и Difficulty_level:Как разместить строки в Django Admin?

я создал inline в admin.py так:

class DifficultyLevelInline(admin.TabularInline): 
    model = DifficultyLevel 

и включенный в QuizAdmin

Чтобы оформить заказ списка, я хотел бы сделать :

list_display = ('name', 'description', 'publication_date', 'category', 'is_active', 'is_premium') 

Как добавить inlines в списке list_display. Я хочу показать DifficultyLevelInline до category.

ответ

3

К сожалению, это невозможно с использованием шаблона по умолчанию.

Если вы посмотрите на шаблон change_form:

https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/change_form.html

Вы можете видеть, что встраивает всегда оказанными после fieldsets.

Один из способов обойти это было бы использовать другой шаблон:

class MyAdmin(admin.ModelAdmin): 
    list_display = ('name', 'description', 'publication_date', 'category', 'is_active', 'is_premium') 
    inlines = (DifficultyLevelInline,) 
    change_form_template = "my_change_form.html" 
+0

Да. Я был почти уверен, что невозможно использовать шаблон по умолчанию. Спасибо за ввод. – pynovice

4

Грапелли поддерживает его: https://django-grappelli.readthedocs.org/en/latest/customization.html#rearrange-inlines

В основном, он использует заполнитель через fieldsets, а затем перемещает их HTML с помощью JavaScript: https://github.com/sehmaschine/django-grappelli/blob/master/grappelli/templates/admin/change_form.html#L90-96 (найдите местозаполнитель, если строки больше не совпадают).

То же самое можно сделать, введя собственный javascript самостоятельно (с использованием или без использования полей в качестве заполнителей).

+0

Я не понимал, какие грапелли переставляют в линию, чтобы объяснить. Где я могу найти заполнитель и идентификатор? Предполагая, что у меня есть 3 встроенных строки 'inlines = (StatementsInline, PPPInline, RSLInline,)' Что мне нужно заменить здесь в этом примере? '(« Image Inlines », {" classes ": (" placeholder images-group ",) "fields":()}), 'для вставки моих inline, thx – Charlesliam

+0

@Charlesliam" placeholder "используется как-is (в виде строки). Идентификатор («группа изображений») можно найти, просмотрев, например, HTML. Вероятно, это результат вашей модели, например. "image" => "images-group". Итак, с моделью Foo вы бы использовали: '(« Image Inlines », {« classes »: (« placeholder foos-group »,),« fields »:()}),' – blueyed

+0

Не работает для меня. Пожалуйста, помогите –

Смежные вопросы