Как изменить макет и расположение полей административных форм Django?

#django #django-models #django-admin

#джанго #django-модели #django-admin #django

Вопрос:

У меня есть простая модель a Student , которая зарегистрирована администратором через a admin.ModelAdmin .

Форма изменения администратором этой модели выглядит следующим образом: Текущий вид

Я хотел бы немного изменить макет этой формы, чтобы несколько полей могли находиться в одной строке, вот так (отредактировано в Paint): введите описание изображения здесь

Есть ли что-то, что я мог бы сделать, не переопределяя шаблоны по умолчанию? А если нет, то каков наилучший способ?

Заранее благодарю.

Ответ №1:

Вы можете использовать fields атрибут в ModelAdmin следующим образом:

 @admin.register(Student)
class StudentAdmin(admin.ModelAdmin):

    fields = (
        ('no_student', 'last_name', 'first_name),
        'course',
        'sex',
        'id'
    )
  

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

Комментарии:

1. Чем это отличается от ответа Сагара?

2. Использование fieldsets в этом примере избыточно, вместо этого вы можете сделать это с помощью fields .

Ответ №2:

Вы можете сделать это с помощью наборов полей.

 class StudentAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': (('no_student', 'last_name', 'first_name), 'course', 'sex', 'ID')
        }),
        ...
)
  

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

Ссылка