Как сделать форму в django admin с initial полями?

Чтобы создать форму с initial полями в Django admin, вам потребуется определить классы моделей и административные формы. Возможно, вам придется создать также административный класс для вашей модели.

  1. Определите административную форму:
  • Создайте файл forms.py в папке вашего приложения (если его нет, создайте его).
  • Импортируйте необходимые модули:
     from django import forms
     from .models import YourModel
  • Определите форму на основе модели:
     class YourModelForm(forms.ModelForm):
         class Meta:
             model = YourModel
             fields = '__all__'  # или перечислите необходимые поля как список
  • Добавьте дополнительные поля или измените поведение формы по вашему усмотрению.
  • Чтобы добавить initial значения, вы можете передать их в аргументе initial вашей формы:
     class YourModelForm(forms.ModelForm):
         initial_field = forms.CharField(initial='initial value')
         # ...
         class Meta:
             model = YourModel
             fields = '__all__'
  1. Создайте административный класс для вашей модели:
  • Откройте файл admin.py в папке вашего приложения (если его нет, создайте его).
  • Импортируйте необходимые модули:
     from django.contrib import admin
     from .models import YourModel
     from .forms import YourModelForm
  • Определите административный класс:
     class YourModelAdmin(admin.ModelAdmin):
         form = YourModelForm
  • Если вы хотите, чтобы форма отображалась сразу после добавления или изменения записи, добавьте аргумент add_form_template или change_form_template:
     class YourModelAdmin(admin.ModelAdmin):
         form = YourModelForm
         change_form_template = 'admin/yourapp/your_change_form.html'

Создайте шаблон (yourchangeform.html), а затем настройте его по своему усмотрению.

  1. Зарегистрируйте вашу модель и административный класс:
  • В файле admin.py добавьте следующий код:
     admin.site.register(YourModel, YourModelAdmin)

Теперь при открытии формы добавления или изменения записи в административной панели Django вы увидите форму с указанными initial значениями.