【问题标题】:Use a form with a custom __init__ in Django Admin在 Django Admin 中使用带有自定义 __init__ 的表单
【发布时间】:2015-01-13 14:41:11
【问题描述】:

我使用下面的代码在 Django Admin 中添加自定义表单:

class MyAdmin(admin.ModelAdmin):
    form = MyForm

但是,表单有一个重写的构造函数:

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

如何将管理员当前用户传递给表单构造函数?

【问题讨论】:

    标签: python django django-forms django-admin


    【解决方案1】:

    像这样更改您的 MyAdmin 类:

    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
    

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

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

    【讨论】:

    • 但是我需要从 init 方法中删除“author”参数,否则会出错。我想保留参数。
    • @Ivan 你可以通过author参数在def get_form中形成__init__
    • 您能否添加一个示例以查看如何将author 添加到__init__ 方法中来自get_form
    猜你喜欢
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2019-08-29
    • 2011-12-14
    • 2018-02-22
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多