首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在ModelForm中传递数据时,有没有一种方法可以过滤数据?我们如何编辑它们?

在ModelForm中传递数据时,可以通过重写clean()方法来过滤数据。clean()方法是ModelForm中用于数据验证和清洗的方法,它会在调用is_valid()方法时自动被调用。

clean()方法中,可以通过访问self.cleaned_data来获取经过验证和清洗后的数据。你可以在clean()方法中对这些数据进行进一步的处理和过滤,然后将处理后的数据返回。

以下是一个示例代码,演示如何在ModelForm中过滤数据:

代码语言:txt
复制
from django import forms
from .models import MyModel

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'

    def clean(self):
        cleaned_data = super().clean()
        # 获取需要过滤的字段的值
        field_value = cleaned_data.get('field_name')
        
        # 进行数据过滤
        filtered_value = do_some_filtering(field_value)
        
        # 将过滤后的值重新赋值给字段
        cleaned_data['field_name'] = filtered_value
        
        return cleaned_data

在上述示例中,我们重写了clean()方法,并在其中获取了需要过滤的字段的值field_value。然后,我们调用了一个自定义的过滤函数do_some_filtering()对该值进行过滤,并将过滤后的值赋值给cleaned_data中的相应字段。

这样,在调用is_valid()方法后,通过访问form.cleaned_data['field_name']就可以获取到经过过滤后的数据。

需要注意的是,clean()方法中的过滤操作应该在验证之后进行,以确保数据的有效性。另外,如果需要对多个字段进行过滤,可以在clean()方法中依次处理每个字段。

关于Django的ModelForm和数据清洗的更多信息,可以参考腾讯云文档中的相关内容:Django ModelForm

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于“Python”的核心知识点整理大全55

我们将主题和条目都存储字典context(见4),再将这个字典发送给模板topic.html(见5)。 注意 2处和3处的代码被称为查询,因为它们数据库查询特定的信息。...接下来,我们显示当前的主题(见1), 它存储模板变量{{ topic }}。为什么可以使用变量topic呢?因为它包含在字典context。...Django,创建表单的最简单方式是使用ModelForm,它根据我们第18章定义的模型 的信息自动创建表单。...对于只是从服务 器读取数据的页面,使用GET请求;在用户需要通过表单提交信息,通常使用POST请求。处理 所有表单我们都将指定使用POST方法。...我们使用用户输 入的数据它们存储request.POST)创建一个TopicForm实例(见3),这样对象form将包含 用户提交的信息。

12510

37.Django1.11.6文档

实例化、处理和渲染表单 Django 渲染一个对象我们通常: 视图中获得它(例如,从数据获取) 将它传递给模板的context 使用模板变量将它扩展为HTML 标记 除了几个关键点不同之外...模型实例不包含数据的情况下,模板对它做处理很少有什么用处。 但是渲染一个未填充的表单却非常有意义 —— 我们希望用户去填充它。 所以当我们视图中处理模型实例我们一般从数据获取它。...当我们实例化表单我们可以选择让它为空还是预先填充它,例如使用: 来自一个保存后的模型实例的数据(例如用于编辑的管理表单) 我们从其它地方获得的数据 从前面一个HTML 表单提交过来的数据 获取HTML...默认情况下它们都已经添加,除非你手动调整过设置,否则不需要自己添加。 确定你的应用的哪些模型管理后台界面应该可以编辑。...此选项的任何字段(应为list或tuple)将按原样显示其数据,不可编辑它们也被排除在用于创建和编辑ModelForm之外。

24.3K80

Django Form的使用

ModelForm 比较简单,它适用于:当你创建的表单内容与某个 Model 内容很相似的情况。如上面文档介绍的一样 Form 类,clean 方法可以在做表单验证,它是一个总的验证方法。...,每个元素都用数据库一个字段去做存储不太现实,因为需求是一直变化的。...所以我采用的解决办法是提取公共的元素,其他可变的元素用了一个json字段存在数据。 而这样导致的问题就是,不能使用 ModelForm ,我选择了使用普通的 forms.Form 。...图片格式编辑如何获取之前展示的结果 对于图片,新建的时候上传还比较简单,问题是在于如果是编辑如何带回原来的上传结果。我们都知道 是没办法赋值的。...clean_xxx 方法未返回值,form.clean_data['xxx'] 获取不到值 这是需要比较注意的一点,我们可以通过写 clean_xxx(self) 的方法,来对表单的某个属性做校验,但一旦校验通过

2.2K20

三、模型(一)

当你尝试要将用某种编码保存的数据结合到另外一种编码的数据,或者你想要把它显示已经假定了某种编码的程序的时候,问题就会发生。 我们都已经见到过网页和邮件被???弄得乱七八糟。 ??????...它们使用Unicode,一个一致的,通用的字符编码集。 当你Python处理Unicode对象的时候,你可以直接将它们混合使用和互相匹配而不必去考虑编码细节。...数据过滤 我们很少会一次性从数据取出所有的数据;通常都只针对一部分数据进行操作。...Django API我们可以使用`` filter()`` 方法数据进行过滤: >>> Publisher.objects.filter(name='Apress') [<Publisher:...连锁查询 我们已经知道如何数据进行过滤和排序。 当然,通常我们需要同时进行过滤和排序查询的操作。

4.5K90

Django搭建博客(八):进阶:form与 model配合使用

一、使用情景 我们的后台管理页面需要一个表单来提交和修改博客,按照上一篇讲的,我们可以这么使用: 先定义一个 Form类,包括标题、标签和内容三个字段: class ArticleForm(forms.Form...form,提交表单我们还需要将各个字段赋值给 model的对应字段。...这样当我们提交表单之后,只需要调用 ArticleForm 的 save 方法即可将添加的博客保存到数据库中去。...不过我们这里有两个字段没有添加到 form表单中去,所以调用 save 方法时会报错,这时只需重载 save 方法即可: class ArticleForm(forms.ModelForm):...,我们可以直接将查询到的 Post 类传递给 ArticleForm 的 instance 参数。

57930

自定义admin组件

把他们放到ModelStark的目的就是根据不同的app和model以及他们注册定制的配置类显示对应的数据和展示方式。...2 此时想在每一列的后面放在编辑按钮。 app01/strak.py给添加一个方法,使每一条数据都有一个编辑按钮。 ? ?..." % user_id) View Code  edit方法需要一个obj参数来获取用户id,service/stark.py的list_view给它传递, ?...admin添加数据的时候,如果哪个字段和其他表有关联,可以输入框的后面点击加号去添加关联表的数据。...Ok  ,现在能跳转到对应的添加页面,但是我们需要知道添加完数据之后给哪个字段添加数据,并且提交表单之后要返回添加的数据,而且要把值放到字段对应的select标签里。

1.5K10

djangoModelForm多表单组合的解决方案

那么,一个模型代表着RDS的一张表,模型的实例代表着关系数据的一行,而form如何与一行相对应呢?..._save_m2m           return self.instance   所以,对于ModelForm我们可以传入instance参数初始化表单,可以调用save()方法直接将从html里得到的表单数据持久化到数据...即,我们可以通过它们,把很多重复的工作交给django完成,又可以少写很多代码完成同样的功能了。...比如CreateView就会由django自动的把页面上POST出的form数据解析到model生成的表单(或者form_calss指定的ModelForm类型表单),同时调用表单的save方法数据添加到模型对应的数据库表...所以,从模型创建出的表单ModelForm,配合上通用视图后,威力巨大!! 4、多个ModelForm一个form里提交 终于可以回到本文的主题了。

3.3K20

django入门:Admin管理系统及表单(干货)

这一部分将介绍 django 自带的后台管理系统,以及如何通过表单提交数据 django admin 后台管理系统 在后台管理系统注册创建的模型 from django.contrib import admin...from blog.models import Post, Category, Tag # 应用目录下的 admin.py 文件,对创建的模型进行注册,可以一起用列表注册,也可以分开注册 admin.site.register...:8080/admin" 打开 admin 管理系统,登录的账号密码就是我们第一部分通过命令行 createsuperuser所创建的,登陆后我们可以找到站点管理,对模型进行管理操作 ?...list_editable = ['title', 'author'] # 排除一些不想被编辑的 fields, 没有列表的不可被编辑 fields = ('title...', 'author') # 设置哪些字段可以点击进入编辑界面 list_display_links = ('tag', 'title') # 进行数据排序,

2.8K20

Django006:ModelForm组件

传统方法的痛点 用户提交数据没有校验。 页面上,每一个字段都需我们重写一遍。 关联的数据,手动去获取并展示循环展示再页面。...基于以上的痛点,我们使用Django开发的时候就可以引用ModelForm组件,他是Django特有的,并在传统的开发的步骤的基础上,优化了以上总结的痛点。...但是,若想前后端分离,只想让Django写后端的话,此方法不是最佳选择。...(编辑页面为例) 通过以下方法快速关联数据的每一行的数据: row_obj = models.YGB.objects.filter(id=nid).first() form = UserModelForm...(data=request.POST, instance=row_obj) instance=row_obj与filter(id=nid)说明:用传递的nid参数做标识,用instance指定此标识所在的数据

19440

django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单

这些通用的视图将自动创建一个ModelForm,只要它们能知道使用哪一个模型类: 如果给出model属性,则使用该模型类。 如果get_object() 返回一个对象,则使用该对象的类。...注 当指定一个自定义的表单类,你必须指定模型,即使form_class 可能是一个ModelForm。...首先我们需要添加get_absolute_url() 到我们的Author 类: #models.py from django.core.urlresolvers import reverse from...注意这里我们如何配置通用的基于类的视图的;我们自己没有写任何逻辑: #views.py from django.views.generic.edit import CreateView, UpdateView...AJAX 示例 下面是一个简单的实例,展示你可以如何实现一个表单,使它可以同时为AJAX 请求和‘普通的’表单POST 工作: from django.http import JsonResponse

1.8K20

Django 构建模板form表单的两种方法

通常情况下,我们想构建一张表单时会在模板文件login.html写入 <form action="/your-name/" method="post" <label for="your_name"...django是如何在模板文件中生成form表单: 1、自定义显示的字段: 假如我们要在模板中生成一张含有username和content的表单 app下新建forms.py(/users/forms.py...', max_length=5) #max_length 浏览器限制用户输入的字符串长度 content = forms.CharField(label='留言', max_length=100) 视图文件引用上边表单字段并传递给模板...= Lesson fields = ['add_time', 'name', 'learn_times'] #要显示的字段 视图文件引用上边表单字段并传递给模板(users/view.py) from...所有表单类都作为 django.forms.Form 或者 django.forms.ModelForm 的子类来创建。您可以ModelForm 想象成 Form 的子类。

1.6K20

Django ModelForm操作及验证方式

) localized_fields=('birth_date',) # 本地化,如:根据不同时区显示数据 如: 数据 2016-12-27 04:10:57 setting的配置 TIME_ZONE...} # localized_fields=('ctime',) # 哪些字段做本地化 4、ModelForm 数据库操作 4.1、创建数据save 如果数据验证是ok的,那么save,就直接在数据创建完数据了...if obj.is_valid(): obj.save() # 创建数据 如下一对多、多对多关系: class UserType(models.Model): caption = models.CharField...拆开就可以自定制操作了 4.3、修改数据 修改表数据是,记得把instance信息也传进去,不然是新建数据,而不是对某行数据进行修改。...钩子、额外字段 数据验证钩子 从上面的Form和ModelForm,他们都是继承了BaseForm,而is_valid是BaseForm定义的,所以ModelForm也能和Form一样使用各种钩子

1.2K10

django 1.8 官方文档翻译: 5-1-1 使用表单

Django 的登录表单使用POST 方法,在这个方法浏览器组合表单数据、对它们进行编码以用于传输、将它们发送到服务器然后接收它的响应。...实例化、处理和渲染表单 Django 渲染一个对象我们通常: 视图中获得它(例如,从数据获取) 将它传递给模板上下文 使用模板变量将它扩展为HTML 标记 模板渲染表单和渲染其它类型的对象几乎一样...模型实例不包含数据的情况下,模板对它做处理很少有什么用处。但是渲染一个未填充的表单却非常有意义 —— 我们希望用户去填充它。 所以当我们视图中处理模型实例我们一般从数据获取它。...当我们实例化表单我们可以选择让它为空还是预先填充它,例如使用: 来自一个保存后的模型实例的数据(例如用于编辑的管理表单) 我们从其它地方获得的数据 从前面一个HTML 表单提交过来的数据 最后一种情况最令人关注...当调用这个方法,如果所有的字段都包含合法的数据,它将: 返回True 将表单的数据放到cleaned_data属性

4.2K20

关于“Python”的核心知识点整理大全56

渲染页面以及处理表单数据,都需要知道针对的是哪 个主题,因此我们使用topic_id来获得正确的主题(见1)。 2处,我们检查请求方法是POST还是GET。...如果请求方法为POST,我们就对数据进行处理:创建一个EntryForm 实例,使用request对象的POST数据来填充它(见4);再检查表单是否有效,如果有效,就设 置条目对象的属性topic,再将条目对象保存到数据库...调用save()我们传递了实参commit=False(见5),让Django创建一个新的条目对象,并 将其存储到new_entry,但不将它保存到数据。...19.1.3 编辑条目 下面来创建一个页面,让用户能够编辑既有的条目。 1. URL模式edit_entry 这个页面的URL需要传递编辑的条目的ID。.../1/)传递的ID存储形参entry_id

11410

七日Python之路--第十二天(Django Web 开发指南)

def myview(*args, **kwargs): #这样我们可以使用,args[0]或kwargs['object_id'] 而不需要再记住 URLconf的名称了 ##当然 Django1.6...模板系统通常用来生成HTML文件,但还可以生成log文件,E-mail正文,CSV文件等任何文本格式。! 模板输出context变量,会隐式的调用unicode方法。...如果试图打印没有__unicode__方法的对象,模板是不可见的。 (17)模板过滤器 模板过滤器。...(20)保存 ModelForm 有一个save()方法可以将信息保存为数据库里的一条记录,然后返回Model对象结果。...当有关联对象,Django会给表单添加一个额外的方法 save_m2m (21)区别于Model ModelForm的Meta嵌套类允许你定义两个可选属性,fields和exclude

1.7K20

初识代码审计

代码审计的技术手段,可以弥补黑盒渗透测试的未能完全覆盖的漏洞环节与安全隐患,是一种可靠性、安全性最高的修补漏洞的方法。...phpstudy默认支持多款中间件,方便我们不同中间件下进行审计。 浏览器: 代码审计过程我们经常需要测试代码浏览器返回的结果。安装多款性能强大的浏览器可以我们代码审计起到很大的帮助。...编辑器: 俗话说的好,工欲善其事,必先利其器。成功的代码审计自然离不开编辑器的帮助,一款适合自己的编辑可以我们阅读代码的速度事半功倍。 例如: ? 编辑可以我们提供以下必不可少的优点。...过滤功能:通过详读 公共函数文件 和 安全过滤文件 等文件,清晰掌握用户输入的数据,哪些被过滤,哪些无过滤,在哪里被过滤了,如何过滤的,能否绕过过滤数据过滤的方式是替换还是正则?有没有GPC?...有没有使用addslasher()处理? 了解网站目录结构,重要文件目录作用 ? 几种常见审计方法: 通读全文法通读全文发作为一种最麻烦的方法也是最全面的审计方法

3.4K20

12.Django基础十之Form和ModelForm组件

一 Form介绍   我们之前HTML页面利用form表单向后端提交数据,都会写一些获取用户输入的标签并且用form标签把它们包起来。   ...  除了上面两种方式,我们可以Form类定义钩子函数,来实现自定义的验证功能。...局部钩子     我们Fom类定义 clean_字段名() 方法,就能够实现对特定字段进行校验。     ...举个例子,你也许会有个Book 模型,并且你还想创建一个form表单用来添加和编辑书籍信息到这个模型。 在这种情况下,form表单定义字段将是冗余的,因为我们已经模型定义了那些字段。   ...    如果不用ModelForm编辑的时候得显示之前的数据吧,还得挨个取一遍值,如果ModelForm,只需要加一个instance=obj(obj是要修改的数据库的一条数据的对象)就可以得到同样的效果

3.1K20

Django学习之八:forms组件【对

这是modelform非常重要的一点,因为我们得到form正确数据后,是要同步到数据的,我们不可能将数据再一一ORM操作到数据。...但是要注意对应数据库的新增和修改操作,save是有不同逻辑的,你自己想想也是,如果是提交的数据和库存量的数据有约束冲突,那必须解决这个冲突;至于新增就简单了直接插入insert就可以了。...绑定到modelform数据有两种方式,一种是普通方式,一种是绑定一个相同model类的实例对象(这种方式多用于修改视图的表单)。...这样就提供了一个方式,可以修改对象,再提交到库。还有一种情况,如果有一个manytomany字段,创建对象,建立关系可能需要先构建关联表数据后,才能保存。...这时候可以调用modelform.save_m2m()方法保存对象并建立关系数据到中间表。对于commit=True,就没有上面说的两种情况,就直接同步数据

2.1K30
领券