In our application, we have a Model that has a boolean field named
"deleted". When the delete() method is called, we set the deleted
field to 1 and then save the model. We would like to create an admin
site where we can manage the deleted and non deleted instances
separately.

We could accomplish our goal by defining a queryset function for the
ModelAdmin that restricts the instances returned to deleted=0.
However, AFAIK this would eliminate the ability to undelete instances
via the admin. Another option is to allow all instances to be shown
and include delete as a value in the list_filter list for the admin
but that clutters up our UI and requires an extra click. It would be
nice if we could specify that the default admin view for this model
has a list_filter of deleted=0 but I don't think this is currently
possible.

I think a good solution would be to create two ModelAdmins. One to
display active instances and one to display deleted instances. With
this approach we could define a queryset function for each ModelAdmin
and when an instance is deleted it would automatically move to the
correct ModelAdmin. This is explicitly denied in django/contrib/admin/
sites.py. Simply removing this check does not solve our problem but
overwrites the first ModelAdmin for the model with the second via the
dictionary "_registered" in the AdminSite class. From my brief dive
into the admin site, there doesn't appear to be a real need for a one
to one relationship between ModelAdmins and Models. If you allowed
ModelAdmins to specify their own name I think it would be possible to
have more than one ModelAdmin for a Model. I am not a Django expert
but I don't see a reason that this scenario should be excluded.

Can anyone recommend a way to accomplish either of the approaches I
outlined above or propose a new approach that does not violate the
AdminSite rules? Also, if anyone knows why the ModelAdmin needs to
have a one to one relationship with Model please let me know.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to