Django: How to get current user in admin forms?

django, django-admin, django-forms

Solution

Here is what i did recently for a Blog:

class BlogPostAdmin(admin.ModelAdmin):
    form = BlogPostForm

    def get_form(self, request, *args, **kwargs):
        form = super(BlogPostAdmin, self).get_form(request, *args, **kwargs)
        form.current_user = request.user
        return form

I can now access the current user in my `forms.ModelForm` by accessing `self.current_user`

Problem

In Django's `ModelAdmin`, I need to display forms customized according to the permissions a user has. Is there a way of getting the current user object into the form class, so that i can customize the form in its `__init__` method? I think saving the current request in a thread local would be a possibility but this would be my last resort because I'm thinking it is a bad design approach.

Original source