首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果请求数据不包含该字段,如何为Modelform字段赋值

如果请求数据不包含该字段,如何为Modelform字段赋值
EN

Stack Overflow用户
提问于 2021-07-02 11:16:44
回答 1查看 23关注 0票数 0

我有一个有5个字段的Model。我在该模型上创建了一个ModelForm,现在我用包含4个字段的请求数据初始化表单。

请求数据中有4个字段的原因是前端的复选框在未选中时不会使用jquery FormData传递。

现在的问题是,如果没有在请求数据中传递复选框,我想在表单初始化时设置第5个字段的默认值。

最好的做法是在ModelFormForm中设置默认值,或者使用Model中的默认值,或者我可以设置特定字段的值。

欢迎提出建议。蒂娅。

EN

回答 1

Stack Overflow用户

发布于 2021-07-02 16:44:20

在将request.POST绑定到表单之前,您可以随意修改它。如果你正在使用CBV FormView,你可以继承get_form_kwargs的子类。就像这样

代码语言:javascript
复制
# UNTESTED CODE

def get_form_kwargs(self):
    kwargs = super().get_form_kwargs()
    if self.request.method in ('POST', 'PUT'):
        if 'foo' not in kwargs['data']:
            #this starts as request.POST which is an immutable QueryDict
            data = kwargs['data'].copy() # mutable copy
            data['foo'] = 'whatever' #supply the missing default value
            kwargs['data'] = data
    return kwargs

参考Django文档w.r.t。QueryDict。它们是像目录一样的棘手野兽,但它们之间的差异足以让您明白。可以很容易地在shell提示符下创建一个,并使用它来确保您得到正确的结果。

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

https://stackoverflow.com/questions/68219196

复制
相关文章

相似问题

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