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

Django form.save 方法的详细分析

在 Django 中,form.save() 方法是用于将表单中的数据保存到数据库的核心方法。...它的功能和实现可以分为几个重要的部分,下面就是我对 form.save() 方法的详细分析:1、问题背景在 Django 中,我们经常会使用 Form 来处理用户提交的数据。...2、解决方案2.1 示例假设我们有一个添加/编辑产品的表单(其中字段 user 是外键,指向我们的 User 模型),并将其作为两个独立视图函数的触发器 - add / edit:def product_add...2.3 为什么我们需要调用 super 在这个方法上我们之所以需要调用 super 在 save 方法上,是因为我们需要调用父类的 save 方法来保存对象。...form.save() 是 Django 表单系统中的一个核心方法,特别是对于 ModelForm,它简化了将表单数据保存到数据库的过程。

15110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django 模型中自定义Manager和模型方法

    (至于行级功能,也就是只作用于模型实例对象的函数,则通过自定义模型方法实现)....(table-wide).模型方法应该只对特殊模型实例起作用. from django.db import models class Person(models.Model): first_name...Obama' 3.重写预定义的模型方法 还有一组模型方法了封装了一些你可能想要自定义的数据库行为.特别是你可能想要修改save()和delete()的工作方式.你可以自由的重写这些方法(以及其他的模型方法...同样重要的是,您要传递可以传递给模型方法的参数——这就是*args, **kwargs所做的事情。Django将不时扩展内置模型方法的功能,并添加新的参数。...save()方法时,不会自动调用clean()方法,需要views手动调用.

    2.8K20

    Web 开发选 MVC 还是 DDD?

    这就是惯性的力量,无论是勤劳还是懒惰,都会产生惯性,于是勤劳者越来越勤劳,懒惰者越来越懒惰,学霸越来越霸,学渣越来越渣。时间一长,就会觉得自己根本无法改变自己,总会回到我们习以为常的状态。...之所以停止了更新,一方面是懒惰的小人击败了勤奋,另一方面是因为时间不够用。...比如 Django 的 M 和 V 可能是这样的: M # models.py from django.contrib.auth.models import AbstractUser from django.db...、增删改查 func (u *User) BeforeSave() error { ... } func (u *User) Prepare() { ... } func (u *User) Save...而 DDD 开发模式下,我们需要事先理清楚所有的业务,定义领域模型所包含的属性和方法。领域模型相当于可复用的业务中间层。新功能需求的开发,都基于之前定义好的这些领域模型来完成。

    2.1K10

    『Django』模型入门教程-操作MySQL

    这些表的迁移文件已经包含在 Django框架中,当执行迁移时,Django会为这些默认应用程序创建必要的数据库表。 创建模型 在创建模型之前我们需要知道这个模型属于哪一个应用下的。...新增数据的方法有几个: save() :保存 create() :新增数据 bulk_create() :批量新增数据 save() 先试试 save() 方法。...然后创建一个 user_obj_zhangsan 对象,调用 User 模型,分别传入用户名 username 、密码 password 和 邮箱 email 。 最后调用 save() 方法。...所以会用到 get() 和 filter() 方法。 save() save() 和前面讲新增数据时用到的 save() 是一样的,有点覆盖的意思。...所以通常会给数据增加一个字段来判断这条数据是否被删除,也就是逻辑删除,是一种假删除的方法,用到的是前面介绍的 update() 方法来操作。

    9610

    django 关于User模型

    User模型的基本用法: 创建用户: 通过create_user方法可以快速的创建用户。这个方法必须要传递username、email、password。...新的密码') user.save() 登录验证: Django的验证系统已经帮我们实现了登录验证的功能。...通过django.contrib.auth.authenticate即可实现。这个方法只能通过username和password来进行验证。...那么这时候我们就需要扩展用户模型了。扩展用户模型有多种方式。这里我们来一一讨论下。 1. 设置Proxy模型: 如果你对Django提供的字段,以及验证的方法都比较满意,没有什么需要改的。...并且还写了一个接受保存模型的信号处理方法,只要是User调用了save方法,那么就会创建一个UserExtension和User进行绑定。 3.

    1.1K30

    15.Django基础十一之认证系统

    设置Proxy模型: 作用: 给模型增加操作方法 局限: 不能增加或减少User模型的字段 好处: 不破坏原来的User模型的表结构 如果你对Django提供的字段,以及验证的方法都比较满意,没有什么需要改的...一对一外键: 作用: 给模型增加新的字段, 新方法 局限: 只能增加, 不能减少字段, 不能修改户验证方法: authenticate 好处: 不破坏原来的User模型的表结构 如果你对用户验证方法...并且还写了一个接受保存模型的信号处理方法,只要是User调用了save方法,那么就会创建一个UserExtension和User进行绑定。...注意:设置完一定要调用用户对象的save方法!!!     ...,request.user.is_authenticated(),常用的是这个方法 # if not request.user.is_authenticated(): #还有一个验证是否登陆的方法

    2.2K20

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

    封装有用的方法,可移植性,安全性,表现力 (3)主键 使用 AutoField(),或者在某个变量上指定 primary_key = True (4)模型间的关系...(7)使用模型 Django项目中 manage.py 脚本包含了操作数据库的功能。syncdb只能保证所有模型类都有对应的数据库表,但不会修改已经存在的数据库表。...(20)保存 ModelForm 有一个save()方法,可以将信息保存为数据库里的一条记录,然后返回Model对象结果。...save()方法接受一个可选的参数 “ commit ”默认为“ True ”。...当有关联对象时,Django会给表单添加一个额外的方法 save_m2m (21)区别于Model ModelForm的Meta嵌套类允许你定义两个可选属性,fields和exclude

    1.8K20

    Django学习-第十三讲(下):表单(一)forms.form、forms.modelform

    Django中的表单 Django中的表单丰富了传统的HTML语言中的表单。在Django中的表单,主要做以下两件事 渲染表单模板。 表单验证数据是否合法。...return telephone 以上是对某个字段进行验证,如果验证数据的时候,需要针对多个字段进行验证,那么可以重写clean方法。比如要在注册的时候,要判断提交的两个密码是否相等。...3. django表单的 Modelform 大家在写表单的时候,会发现表单中的Field和模型中的Field基本上是一模一样的,而且表单中需要验证的数据,也就是我们模型中需要保存的。..., } } 3.2 save方法 ModelForm还有save方法,可以在验证完成后直接调用save方法,就可以将这个数据保存到数据库中了 form = MyForm...另外,我们在调用save方法的时候,如果传入一个`commit=False,那么只会生成这个模型的对象,而不会把这个对象真正的插入到数据库中。

    3.3K40

    django中ModelForm多表单组合的解决方案

    2、从模型创建表单 django对于MVC中的C与M间的映射是非常体贴的,集中体现中Model模型中(比如模型的权限与用户认证)。...上再调用save方法               self.save_m2m = self....比如CreateView就会由django自动的把页面上POST出的form数据解析到model生成的表单(或者form_calss指定的ModelForm类型表单),同时调用表单的save方法将数据添加到模型对应的数据库表中...注意,它会在post请求中判断表单是否可用,is_valid为真时,会调用form_valid方法,因此,重写form_valid方法是第4部分处理多model到一个form的关键。...True时调用该方法       def form_valid(self, form):           #首先我们要获取到PrimeContractForm表单对应的模型,此时是不能save的,因为外键

    3.4K20

    django 1.8 官方文档翻译: 2-5-6 多数据库

    这是纯粹的验证操作,外键和多对多操作使用它来决定两个对象之间是否应该允许一个关联。...当设置了model_name时,hints 通常通过键’model‘包含该模型的类。注意,它可能是一个历史模型,因此不会有自定的属性、方法或管理器。你应该只依赖_meta。...这个方法还可以用来决定一个给定数据库上某个模型的可用性。 注意,如果这个方法返回False,迁移将默默地不会在模型上做任何操作。这可能导致你应用某些操作之后出现损坏的外键、表多余或者缺失。...路由不必提供所有这些方法 —— 它可以省略一个或多个。如果某个方法缺失,在做相应的检查时Django 将忽略该路由。...第二种方法是使用force_insert 选项来save()以确保Django 使用一个INSERT SQL: >>> p = Person(name='Fred') >>> p.save(using=

    1.5K20

    Django中数据库的相关操作

    数据库操作—增、删、改、查 1 增加 增加数据有两种方法。 1)save 通过创建模型类对象,执行对象的save()方法保存到数据库中。...1)save 修改模型类对象的属性,然后执行save()方法 hero = HeroInfo.objects.get(hname='猪八戒') hero.hname = '猪悟能' hero.save...='沙僧') 4 删除 删除有两种方法 1)模型类对象delete hero = HeroInfo.objects.get(id=13) hero.delete() 2)模型类.objects.filter...当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据。 filter():返回满足条件的数据。 exclude():返回满足条件之外的数据。...判断某一个查询集中是否有数据: exists():判断查询集中是否有数据,如果有则返回True,没有则返回False。

    2.2K50

    Django权限系统auth模块详解

    auth模块 from django.contrib import auth  django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1 authenticate()   ...的auth系统提供了模型级的权限控制, 即可以检查用户是否对某个数据表拥有增(add), 改(change), 删(delete)权限。...检查用户权限 user.has_perm方法用于检查用户是否拥有操作某个模型的权限: user.has_perm('blog.add_article') user.has_perm('blog.change_article...') user.has_perm('blog.delete_article') 上述语句检查用户是否拥有blog这个app中article模型的添加权限, 若拥有权限则返回True。...在django.contrib.auth.models.Permission模型中保存了项目中所有权限。 该模型在数据库中被保存为auth_permission数据表。

    1.6K20

    Django 自定义用户 VS 用户资料

    Django是一个流行的Web框架,它提供了一套完整的用户认证系统,其中包括内置的User模型用于存储基本的用户信息,如用户名、密码等。...然而,如果我们需要更详细的用户资料管理,比如添加更多的字段或者自定义验证规则,Django允许我们自定义用户模型。...使用旧方法,您必须连接辅助表才能获取用户的全部信息。通常,当您看到一对一的关系时,最好将它们合并到一个表中。但新的自定义用户模型还解决了另一个问题,即用户应该具有哪些属性?...created: UserProfile.objects.create(user=instance)​@receiver(post_save, sender=MyUser)def save_user_profile...(sender, instance, **kwargs): instance.userprofile.save()这样您就可以在 Django 中使用自定义用户模型和用户资料模型来存储用户数据了。

    10710

    Django小技巧22: 设计一个好的模型

    模型的定义是对单个对象的表示, 而不是公司的集合. 这通常会导致混淆,因为我们倾向于通过数据库思考。模型最终被翻译成table.该表使用其复数形式命名的....Python Company.companies.filter(name='Google') 这样看起来代码就很有可读性了 Model 定义顺序 Django Coding Style 建议内部类,方法和属性的顺序为...所有数据库fields Custom manager attributes class Meta def __str__() def save() def get_absolute_url() 其他自定义方法...METHOD def save(self, *args, **kwargs): do_something() super().save(*args, **kwargs...Blank 和 Null 我在另一篇文章有讲过两者的区别 Blank or Null,在这里我会总结一下. null: 数据库相关; 定义数据库字段的值是否接受空值。

    89920
    领券