Lors de l'ajout d'un champ de formulaire supplémentaire à la readonly_fields
d'un ModelAdmin
je reçois une erreur ImproperlyConfigured
lors de l'ouverture de la page d'administration d'une instance de mon modèle:Comment ajouter un champ de formulaire supplémentaire modeladmin à readonly_fields?
TaskClosedAdmin.readonly_fields[0], 'extra_admin_field' is not a callable or an attribute of 'TaskClosedAdmin' or found in the model 'TaskClosed'.
Comment puis-je ajouter le champ supplémentaire à readonly_fields?
EDIT
J'ai aussi essayé dans le get_form()
de TaskClosedAdmin
, pensant que les champs peuvent être mis à jour après super(TaskClosedAdmin, self).get_form(request, obj, **kwargs)
:
def get_form(self, request, obj=None, **kwargs):
form = super(TaskClosedAdmin, self).get_form(request, obj, **kwargs)
self.readonly_fields = obj._meta.get_all_field_names()
self.readonly_fields.append('extra_admin_field')
return form
et je reçois toujours la même erreur au sujet extra_admin_field
pas existant .. Où puis-je l'ajouter?
models.py
class Task(models.Model):
# some fields
class TaskToConfirm(Task):
class Meta:
proxy = True
admin.py
class TaskForm(forms.ModelForm):
extra_admin_field = forms.CharField(max_length=10)
class Meta:
model = Task
def __init__(self, *args, **kwargs):
super(TaskForm, self).__init__(*args, **kwargs)
# set extra_admin_field value
class TaskAdmin(admin.ModelAdmin):
form = TaskForm
class TaskClosedAdmin(TaskAdmin):
readonly_fields = ('extra_admin_field',)
Depuis ModelAdmin a un attribut readonly_fields, je suppose que quelque chose de similaire existe déjà dans Django. Je voudrais juste ajouter mon champ supplémentaire à ce readonly_fields. – jul
Ok, vous avez raison, extra_admin_field est un champ de formulaire, pas un champ de modèle, donc je ne peux pas l'ajouter à l'objet modeladmin readonly_fields. – jul