Opened 16 years ago
Last modified 4 years ago
#12238 new
ModelAdmin ignores dynamic fields of ModelForm — at Version 3
| Reported by: | anonymous | Owned by: | nobody |
|---|---|---|---|
| Component: | contrib.admin | Version: | 1.1 |
| Severity: | Normal | Keywords: | modelform modeladmin dynamic field |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | yes | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
If a ModelForm is created and then modified to programatically add fields (say, in __init__), ModelAdmin ignores these fields when rendering the form. If one of these fields is added to the ModelForm's Meta, the field shows up just fine.
I would expect the field to display without the coaxing in Meta.fields.
- Create a ModelForm
- Add it to ModelAdmin
- View Form
- Update ModelForm's
__init__to includeself.fields['xyz'] = forms.CharField(max_length=255, initial='keke') - View Form (note no change)
- Update ModelForm's
Meta.fieldsto include "xyz" - View Form (note the change)
Change History (3)
comment:1 by , 16 years ago
| Component: | Uncategorized → django.contrib.admin |
|---|
comment:2 by , 16 years ago
| Has patch: | set |
|---|
comment:3 by , 16 years ago
| Description: | modified (diff) |
|---|---|
| Has patch: | unset |
(reformat description, also it hasn't a patch until it has a patch)
Note:
See TracTickets
for help on using tickets.
I've solved this in the meantime by updating contrib/admin/options.py in:
def get_fieldsets(self, request, obj=None): "Hook for specifying fieldsets for the add form." if self.declared_fieldsets: return self.declared_fieldsets #form = self.get_form(request, obj) #return [(None, {'fields': form.base_fields.keys()})] form = self.get_form(request, obj)(instance=obj) return [(None, {'fields': form.fields.keys()})]Seems to be a harmless fix, possible to get this applied upstream?