How can I override django admin main page in order to hide certain activities.
For example:
I don't want the admin to see which users he created on the admin main page.I'm thinking I could override the get_queryset method like this:
class ActiveLogManager(models.Manager):
get_queryset():
entries = LogEntry.objects.exclude(content_type=4, action_flag=1)
return entries
But I don't know where to place the admin manager.
The queryset of admin main page logs is defined by the template tag django.contrib.admin.templatetags.log.get_admin_log
.
So you can override the log
template tags library by redefining it in yourapp/templatetags/log.py
(yourapp
must be before django.contrib.admin
in your INSTALLED_APPS
, so that your log
template tags library takes the precedence over django.contrib.admin
's).
from django.contrib.admin.templatetags.log import * # noqa
def __AdminLogNode_render(self, context):
if self.user is None:
entries = LogEntry.objects.all()
else:
user_id = self.user
if not user_id.isdigit():
user_id = context[self.user].pk
entries = LogEntry.objects.filter(user__pk=user_id)
entries = entries.exclude(content_type=4, action_flag=1)
context[self.varname] = entries.select_related('content_type', 'user')[:int(self.limit)]
return ''
__AdminLogNode_render.__name__ = 'render'
AdminLogNode.render = __AdminLogNode_render
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With