在Django Admin中使用带有自定义__init__的表单 [英] Use a form with a custom __init__ in Django Admin

查看:228
本文介绍了在Django Admin中使用带有自定义__init__的表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用以下代码在Django Admin中添加一个自定义表单:

I use the code below to add a custom form in 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 could I pass the Admin current user to the form constructor?

推荐答案

更改您的 MyAdmin 类如下: / p>

change your MyAdmin class 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

您现在可以访问 forms.ModelForm 中的当前用户通过访问 self.curren t_user

You can now access the current user in your 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

这篇关于在Django Admin中使用带有自定义__init__的表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆