首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django表单:绑定表单的默认值

django表单:绑定表单的默认值
EN

Stack Overflow用户
提问于 2013-04-16 07:47:24
回答 7查看 15.4K关注 0票数 11

使用此表单:

代码语言:javascript
复制
class Form(forms.Form):
    name = forms.CharField(required=False, initial='Hello world')

如果我在视图中这样做:

代码语言:javascript
复制
form = Form(request.GET)
if form.is_valid():
    name = form.cleaned_data['name']

则即使request.GET不包含name作为关键字,名称的初始值也会丢失。有什么变通方法吗?我希望初始值作为“默认值”来绑定表单。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-06-22 20:14:56

通过稍微修改贡萨罗的解决方案,这是正确的方式:

代码语言:javascript
复制
class Form(forms.Form):
    name = forms.CharField(required=False, initial='Hello world')

    def clean_name(self):
        if not self['name'].html_name in self.data:
            return self.fields['name'].initial
        return self.cleaned_data['name']

如果你需要这个,你可以看看django-filter应用。我最近发现了这一点。

票数 11
EN

Stack Overflow用户

发布于 2013-04-16 08:39:26

initial实际上并不是用来设置表单域的默认值。相反,在向用户显示表单时,它实际上更像是一个占位符实用程序,如果字段不是必需的,它将不能很好地工作(就像您的示例中一样)。

您可以做的是使用define a clean_方法检查该字段是否为空值,并返回默认值:

代码语言:javascript
复制
class Form(forms.Form):
    name = forms.CharField(required=False, initial='Hello world')

    def clean_name(self):
        name = self.cleaned_data['name']
        if name is None:
            return self.fields['name'].initial
        return name
票数 5
EN

Stack Overflow用户

发布于 2013-12-01 15:21:59

我使用以下模式将默认值设置为表单给定的初始值-

代码语言:javascript
复制
class InitialDefaultForm(forms.Form):
    def clean(self):
        cleaned_data = super(InitialDefaultForm, self).clean()
        # if data is not provided for some fields and those fields have an
        # initial value, then set the values to initial value
        for name in self.fields:
            if not self[name].html_name in self.data and self.fields[name].initial is not None:
                cleaned_data[name] = self.fields[name].initial
        return cleaned_data

这可确保所有具有初始值且未从用户处获取值的字段都使用其初始值进行填充。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16026479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档