首页 > 解决方案 > 是否可以将额外数据作为参数传递给 django 管理表单?

问题描述

我有一个带有已实现 Django 管理界面的 Django 模型,我想显示模型的表单。如果表单只显示模型的属性,这是一个简单的任务。我的问题是我想根据经过身份验证的用户更改表单的字段。有什么方法可以将额外的数据(用户)作为参数从管理员传递给 ModelForm初始化函数?我找到了一些教程,但它们的实现仅适用于基本视图,不适用于 Admin 实现。

我还尝试将一个额外的参数传递给管理员 get_form() 函数,但这是不可能的。我收到提供了意外参数的错误。

我的表格:

Class ProfileForm(forms.ModelForm):
    first_name = forms.CharField(required=True)
    last_name = forms.CharField(required=True)

    class Meta:
    model = Profile

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        interests = ProfileInterest.objects.filter(
            user=user # HERE I WOULD LIKE TO ACCESS THE USER (request.user)
        )
        for i in range(len(interests) + 1):
            field_name = 'interest_%s' % (i,)
            self.fields[field_name] = forms.CharField(required=False)
            try:
                self.initial[field_name] = interests[i].interest
            except IndexError:
                self.initial[field_name] = “”
        # create an extra blank field
        field_name = 'interest_%s' % (i + 1,)
        self.fields[field_name] = forms.CharField(required=False)

我正在尝试过滤用户的ProfileInterest查询集,然后将它们显示为表单字段。我需要以某种方式将用户实例传递给 Admin 定义中的表单。

标签: pythondjangodjango-formsdjango-admin

解决方案


推荐阅读