我有一个用于访问目录的django表单。但是,我想基于给定的输入访问两个不同的目录,但是有一个FilePathField。
作为一个例子-我有两个面板-'panel1'和'panel2'。我要访问的目录是每个面板的分析目录,如下所示:
/path/destination/panel1/analysis/
/path/destination/panel2/analysis/
在每个分析目录中,都有以“实验”开头的目录,我希望用户可以选择这些目录以获取一些结果。
我有我的表格:
class RunUploadForm(forms.Form):
directory_path = forms.FilePathField(
path='/path/destination/panel1/analysis',
required=True,
allow_folders=True,
allow_files=False,
recursive=True,
match="Experiment*",
label="Pick folder for results:"
)
class Meta:
fields = ('directory_path',)
这仅允许用户访问panel1目录,因为它已硬编码到路径arg中。有没有一种方法可以动态更改此路径参数,也许可以使用choicefield?
答案 0 :(得分:0)
一种方法是将路径作为参数传递给表单的__init__
方法,例如:
class RunUploadForm(forms.Form):
directory_path = forms.FilePathField(
path='/path/destination/panel1/analysis',
required=True,
allow_folders=True,
allow_files=False,
recursive=True,
match="Experiment*",
label="Pick folder for results:"
)
class Meta:
fields = ('directory_path',)
def __init__(self, *args, **kwargs):
path = kwargs.pop('path', 'somedefaultvalue')
super().__init__(*args, **kwargs)
self.fields['directory_path'] = forms.FilePathField(
path=path,
required=True,
allow_folders=True,
allow_files=False,
recursive=True,
match="Experiment*",
label="Pick folder for results:"
)
您需要创建FilePathField
的新实例,因为此类字段的选择是在__init__
上生成的