Opened 16 years ago
Closed 15 years ago
#10939 closed (invalid)
Allow for dynamic registration of inlines into an admin model
Reported by: | zbyte64 | Owned by: | nobody |
---|---|---|---|
Component: | contrib.admin | Version: | 1.0 |
Severity: | Keywords: | inlines | |
Cc: | zbyte64@… | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | UI/UX: |
Description
It used to be (django 0.96) you could arbitrarily add inlines into an admin model:
from django.db import models from django.contrib.models import FlatPage class FlatPageAttachment(models.Model): flatpage = models.ForeignKey(FlatPage, edit_inline=True) attachment = models.FileField(upload_to="flatpages")
Now this is not possible. You could try to import the FlatPage admin and attach an admin inline, but this will not work. The reason for this is that when the Admin model is registered into the admin site, it goes through and populates inline_instances. It is true you could unregister and re-register, but what if another app also wanted to add an inline? If that was the case then only one would get its inline registered.
Perhaps a better alternative is to add a method to ModelAdmin called "register_inline". It would behave something like the following:
def register_inline(self, inline_class): inline_instance = inline_class(self.model, self.admin_site) self.inline_instances.append(inline_instance)
Change History (3)
comment:1 by , 16 years ago
comment:2 by , 16 years ago
Only works if inlines is a list, no?
admin.site.unregister(FlatPageAdmin) FlatPageAdmin.inlines = list(FlatPageAdmin.inlines) FlatPageAdmin.inlines += [FlatPageAttachment] admin.site.register(FlatPage, FlatPageAdmin)
I suppose I didn't want 4 lines of code for something that used to be so easy :/
comment:3 by , 15 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
Closing as invalid since it's still possiblem either my monkey patch or by unregister, alter, reregister.
You can use: