基于Django函数的视图get_form_kwargs

时间:2018-11-13 10:09:23

标签: django view

我有以下问题。

通常在基于Django Class的视图中,get_form_kwargs方法用于为表单__init__()提供kwarg。例如:

class ComponentForm(forms.ModelForm):
    diameter = forms.ModelChoiceField(queryset=Diameter.objects.all(), label='Diameter') # required=True, 

    class Meta:
        model = Component
        fields = [
            'component_type',
            'diameter',
            'length'
        ]

    def __init__(self, *args, **kwargs):
        circuit = kwargs.pop('circuit')
        project = kwargs.pop('project')
        super(ComponentForm, self).__init__(*args, **kwargs)
        self.fields['diameter'].queryset = Diameter.objects.filter(project=project, material = circuit.material_type)

在上面的示例代码中,“电路”和“项目”由相应视图中的get_form_kwargs方法提供。

现在的问题是如何使用基于函数的视图将这些kwargs传递给ComponentForm __init__()

2 个答案:

答案 0 :(得分:0)

好吧,您只需通过它们即可。

form = ComponentForm(circuit=whatever, project=whatever)

答案 1 :(得分:0)

两种方式。

直接在构造函数调用中指定

<script type="text/javascript">
    if(screen.width <= 720) 
    {
        location.href = "indexm.php"; // redirection
    }
    else
    {
        location.href = "index.php"; // redirection
    }
</script>

或者构建字典并使用** kwargs语法将其传递给我-我发现在动态添加属性以及使用继承时(例如对super()的调用),这很有用。 init ( ))。

form = ComponentForm(keyword_arg1=value1, keyword_args2=value2)