如果我使用Forms.Form,可以指定实例参数吗?

时间:2019-04-21 09:47:55

标签: django

我当前正在为其中一种表单使用forms.Form类型,因为我需要为其指定许多参数,例如queryset,disabled,required。

我在forms.py中讨论的参数片段

class InputClassInformation(forms.Form):
    module = forms.ModelChoiceField(queryset=Module.objects.all())
    title = forms.CharField(disabled=True, required=False)

该表格将允许用户更新条目中的某些字段,这意味着我将不得不使用instance参数,如此处https://docs.djangoproject.com/en/2.2/topics/forms/modelforms/#the-save-method所示。但是,在views.py

中运行代码时出现此错误
if Class.objects.filter(module__subject=subject).exists():
   a = Class.objects.filter(module__subject=subject)[0].pk
   form = InputClassInformation(request.POST, instance=a)

错误

TypeError at /input-class-info/
__init__() got an unexpected keyword argument 'instance'

我知道如果我使用ModelForm会很好,但是尝试在ModelForm中指定我需要的所有参数很困难,所以有没有办法我可以指定实例是否想在使用forms.Form时进行更新?

1 个答案:

答案 0 :(得分:0)

由于无法找到答案,因此我不确定这是否是一个愚蠢的问题,因此无论如何我都会发布答案。

就像问题中提到的@DanielRoseman一样,我们可以通过在ModelForms中使用相同的代码来实例化相同的字段。就我而言,我只是将表格更改为:

class InputClassInformation(forms.ModelForm):
    class Meta:
        model = Class
        fields = '__all__'
    module = forms.ModelChoiceField(queryset=Module.objects.all())
    title = forms.CharField(disabled=True, required=False)

现在我可以使用实例了!