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 to share