Reputation: 335
I am trying to add an editable=False
field to a custom admin form, but I am getting an error:
django.core.exceptions.FieldError: 'help_num' cannot be specified for
Investigation model form as it is a non-editable field
This is true, in my model I have it set as such:
models.py
help_num = models.CharField(max_length=17, unique=True, default=increment_helpdesk_number, editable=False)
forms.py
class HelpDeskModelForm(forms.ModelForm):
class Meta:
model = HelpDesk
fields = [
"help_num",
"help_types",
...
"help_summary"
]
admin.py
class HelpDeskModelAdmin(admin.ModelAdmin):
readonly_fields=('help_num',)
form = HelpDeskModelForm
I added the readonly
to admin.py, but am still getting the error. What am I doing wrong?
Upvotes: 13
Views: 19336
Reputation: 13347
You need to remove the non-editable field from your class form list of fields :
class HelpDeskModelForm(forms.ModelForm):
class Meta:
model = HelpDesk
fields = [
#"help_num",
"help_types",
...
"help_summary"
]
And keep the read-only fields in the ModelAdmin like you did :
class HelpDeskModelAdmin(admin.ModelAdmin):
readonly_fields=('help_num',)
form = HelpDeskModelForm
Upvotes: 18