В Django admin есть возможность изменять данные в формах, используя inline-модели. Inline-модели позволяют встраивать связанные модели в форму родительской модели.
Для изменения данных в формах inlines в Django admin следует выполнить следующие шаги:
1. Создать inline-модель:
from django.contrib import admin from .models import ParentModel, ChildModel class ChildModelInline(admin.TabularInline): model = ChildModel
В данном примере создается inline-модель ChildModelInline, которая представляет связанную модель ChildModel. Для отображения связанных данных в форме используется TabularInline, который отображает данные в виде таблицы.
2. Зарегистрировать inline-модель в административной панели:
class ParentModelAdmin(admin.ModelAdmin): inlines = [ ChildModelInline, ] admin.site.register(ParentModel, ParentModelAdmin)
В данном примере inline-модель ChildModelInline была зарегистрирована в административной панели для модели ParentModel с помощью административного класса ParentModelAdmin.
3. Переопределить формы inlines для кастомизации:
Альтернативно, вы можете переопределить формы inlines, чтобы внести свои изменения. Например, вы можете добавить дополнительные поля к форме inline или добавить дополнительные методы для обработки данных.
class ChildModelInlineForm(forms.ModelForm): extra_field = forms.CharField(max_length=100) class Meta: model = ChildModel fields = '__all__' class ChildModelInline(admin.TabularInline): form = ChildModelInlineForm model = ChildModel
В данном примере создается форма ChildModelInlineForm для inline-модели ChildModelInline, в которую добавляется дополнительное поле extra_field. Затем, форма ChildModelInlineForm устанавливается в качестве формы для inline-модели.
Все изменения, внесенные в формы или модели, отображаются автоматически в административной панели Django, когда вы заходите на страницу редактирования родительской модели. Вы можете добавлять, изменять или удалять данные в inline-модели из формы родительской модели непосредственно в административной панели.
Главное преимущество использования inline-моделей в Django admin - это возможность редактировать связанные данные встроенным образом, что делает администрирование и внесение изменений в связанные данные более удобными и эффективными.