Django - 如何设置 forms.FileField 名称

Posted

技术标签:

【中文标题】Django - 如何设置 forms.FileField 名称【英文标题】:Django - how to set forms.FileField name 【发布时间】:2012-03-20 23:14:54 【问题描述】:

我想在我的管理表单中为 FileField 对象设置自定义名称,以便它的 html 名称属性不等于我的实例字段名称。

class MyAdminForm(forms.ModelForm):
    file_field = forms.FileField()

    def __init__(self, *args, **kwargs):                                    
        if kwargs.has_key('instance'):
            instance = kwargs['instance']
            self.initial['image_file'] = instance.file_field

使用此代码,我得到 并且我想要做的是将其 name 属性设置为其他内容。

编辑:

我接受了下面的答案,但我还有另一个问题。是否可以构造可变数量的 FileField 对象?我的意思是 - 如果我现在想要其中的 4 个,但在某些情况下只有一个怎么办?我是否必须将所有这些声明为类字段,例如 file_field1、file_field2 等等,或者是否可以将它们添加到字典中,例如: 'file_field1: FileField(), 'file_field2' : FileField() - 我真的试过了,但出错了……

【问题讨论】:

英语不是您的母语。 避免长句,例如“我想在我的管理表单中为 FileField 对象设置自定义名称,以便它的 html 名称属性不等于我的实例字段名称。”。坚持主语+动词+补语。你的问题会突然变得更有意义! 这里是上面的一些提示.. :) blog.***.com/2010/10/asking-better-questions 和@jpic 提到的你会得到更好的答案.. 非常感谢您的语言建议! :) 【参考方案1】:

HTML 中的 name 属性与表单定义中的 name 相同,因此如果您不希望它为 file_field,请不要将其称为 file_field

class MyAdminForm(forms.ModelForm):
    new_field = forms.FileField()
    # Rest of the form goes here

【讨论】:

如果没有别的办法,那好吧,我就这么办,但是是不是不能声明FileFields的字典? 是的,可以动态创建表单字段。见***.com/questions/5478432/…

以上是关于Django - 如何设置 forms.FileField 名称的主要内容,如果未能解决你的问题,请参考以下文章

Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)

你如何在 Django 中为每个应用程序设置不同的设置?

django中如何设置函数自定义执行

我可以在 Django 设置中定义类吗?如何在测试中覆盖这些设置?

使用 DJANGO_SETTINGS_MODULE 时如何导入设置?

django复习--如何设置模板路径