Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想在Django views.py而不是forms.py中创建表单字段_Python_Django_Forms_Django Forms - Fatal编程技术网

Python 我想在Django views.py而不是forms.py中创建表单字段

Python 我想在Django views.py而不是forms.py中创建表单字段,python,django,forms,django-forms,Python,Django,Forms,Django Forms,我正在form.py中创建表单,如下所示: class pdftabelModelForm(forms.ModelForm): class Meta: model = pdftabel_tool_ fields = ['apn', 'owner_name'] apn = forms.ModelChoiceField(queryset= Field.objects.values_list('name', flat=True), empty_label

我正在form.py中创建表单,如下所示:

class pdftabelModelForm(forms.ModelForm):
    class Meta:
        model = pdftabel_tool_
        fields = ['apn', 'owner_name']
    apn = forms.ModelChoiceField(queryset= Field.objects.values_list('name', flat=True), empty_label="(Choose field)")
    owner_name = forms.ModelChoiceField(queryset= Field.objects.values_list('name', flat=True), empty_label="(Choose field)")
但由于某些原因,例如form.py中没有“self”。我只能在views.py中访问它。所以我想让它像

   class FieldForm(ModelForm):
    class Meta:
        model = pdftabel_tool_
        fields = (
            'apn',
            'owner_name',)

我怎样才能像在forms.py中那样下拉这些字段?

为什么要在views.py中这样做?forms.py是执行此操作的适当位置

与其重新定义字段,不如使用表单的
\uuuuu init\uuuu
方法覆盖字段的查询集,如下所示:

class pdftabelModelForm(forms.ModelForm):
    class Meta:
        model = pdftabel_tool_
        fields = ['apn', 'owner_name']

    def __init__(self, *args, **kwargs):
        super(pdftabelModelForm, self).__init__(*args, **kwargs)
        self.fields['apn'].queryset = X
        self.fields['owner_name'].queryset = X
编辑:如果需要向表单传递额外参数,请将init方法更新为:

    def __init__(self, *args, **kwargs):
        self.layer_id = self.kwargs.pop('layer_id')
        super(pdftabelModelForm, self).__init__(*args, **kwargs)
        self.fields['apn'].queryset = X
        self.fields['owner_name'].queryset = X
从views.py初始化表单时,传递参数:

form = pdftableModelForm(layer_id=X)

实际上,我在view.py中获得了self.layer\u id。我想过滤一些值,比如“(queryset=Field.objects.filters(map\u id=self.layer\u id)values\u list('name',flat=True)”,有关如何将额外参数传递给表单的问题,请参见此问题:。哦,对了。但经过分析,我知道此表单中的“self”。py与该视图中的“form”不同。因此,现在我必须在此处存档,并在view.py中分配drop-crowd查询。请您对此进行指导?