Added logic to skip adding categories that are already defined for a modeladmin

This commit is contained in:
Erik Simmler 2011-01-17 10:55:16 -05:00
parent 44508e0606
commit 246c18d4e6

View file

@ -103,9 +103,18 @@ admin.site.register(Category, CategoryAdmin)
for model,modeladmin in admin.site._registry.items():
if model in registry.values() and modeladmin.fieldsets:
admin.site.unregister(model)
admin.site.register(model, type('newadmin', (modeladmin.__class__,), {
'fieldsets': getattr(modeladmin, 'fieldsets', ()) + (('Categories',{
'fields': [cat.split('.')[1] for cat in registry]
}),)
}))
fieldsets = getattr(modeladmin, 'fieldsets', ())
fields = [cat.split('.')[1] for cat in registry]
# check each field to see if already defined
for cat in fields:
for k,v in fieldsets:
if cat in v['fields']:
fields.remove(cat)
# if there are any fields left, add them under the categories fieldset
if len(fields) > 0:
admin.site.unregister(model)
admin.site.register(model, type('newadmin', (modeladmin.__class__,), {
'fieldsets': fieldsets + (('Categories',{
'fields': fields
}),)
}))