Чтобы переопределить поля формы в администраторе Django, вы можете использовать несколько методов. Вот несколько вариантов:
- Настройка класса ModelAdmin. Вы можете создать собственный класс ModelAdmin для своей модели в файле admin.py и переопределить атрибут formfield_overrides. Это позволяет указать виджет или класс формы для определенного поля.
from django.contrib import admin
from django.db import models
class MyModelAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': TinyMCE()},
}
admin.site.register(MyModel, MyModelAdmin)
- Создание пользовательских классов форм. Вы можете создать собственный класс формы в файле form.py и переопределить поля или виджеты в соответствии с вашими требованиями. Затем свяжите форму с классом ModelAdmin.
from django import forms
from django.contrib import admin
from .models import MyModel
class MyModelForm(forms.ModelForm):
# Custom field/widget overrides
my_field = forms.CharField(widget=forms.Textarea)
class Meta:
model = MyModel
fields = '__all__'
class MyModelAdmin(admin.ModelAdmin):
form = MyModelForm
admin.site.register(MyModel, MyModelAdmin)
- Использование ModelFormMixin. Другой подход — использование ModelFormMixin. Вы можете создать собственный класс ModelForm, переопределить поля или виджеты, а затем смешать его с классом ModelAdmin.
from django.contrib import admin
from django.forms import Textarea
from .models import MyModel
class MyModelAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': Textarea(attrs={'rows': 4, 'cols': 40})},
}
admin.site.register(MyModel, MyModelAdmin)
Это некоторые методы, которые вы можете использовать для переопределения полей формы в администраторе Django. Поэкспериментируйте с ними, чтобы найти тот, который лучше всего соответствует вашим потребностям!