Use a form with custom __init__ in Django Admin

I am using the following code to add a custom form to Django Admin:

class MyAdmin(admin.ModelAdmin):
    form = MyForm

      

However, the form has an overridden constructor:

def __init__(self, author, *args, **kwargs):
    super(MyForm, self).__init__(*args, **kwargs)
    self.author = author

      

How can I pass the current Admin user to the form designer?

+3


source to share


1 answer


change the class MyAdmin

like this:

class MyAdmin(admin.ModelAdmin):
    form = MyForm

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

      



You can now access the current user in forms.ModelForm

by accessing self.current_user

.

def __init__(self, author, *args, **kwargs):
    super(MyForm, self).__init__(*args, **kwargs)
    self.author = author
    # access to current user by self.current_user

      

+3


source







All Articles