Django中,Model.objects.create() 和 Model() 的区别?
高洛峰
高洛峰 2016-10-27 13:59:50
[Python讨论组]

在Django中,比如有一个用户模型 User。我想创建一个用户,在书上发现两种方式:
方法一:

user = User.objects.create(email='a@b.com')

方法二:

user = User(email='a@b.com')
user.username = 'somename'
user.save()

请问这两种方式有什么区别?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

其实区别从你提问的代码里就能看出来,Django 文档官方的解释表明 objects.create 是为了

A convenience method for creating an object and saving it all in one step

用一句话方便的创建并保存一个对象。

objects.create 直接创建并保存了对象,这样 user 代表的就是一个已经保存在数据库中的实例,而方法二的 user 则是一个没有保存在数据库中的实例,如果涉及到 user 是某个对象的外键则需要把它真正存进数据库后才能设置为相应的外键,如果用方法一的方式创建则不用担心这个问题,直接设置就可以了。

二者最后达到的目的是一样的,区别就在于如果在创建对象时所需的数据都知道那么可以直接用 create,反之则需要 save。 当然一直用 save 也没有任何问题。


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号