Django创建一条数据库的数据:Model.objects.create() 和 Model() 的区别


Django中,Model.objects.create() 和 Model() 的区别?

Chris_J 2016年09月20日提问
3 关注
0

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

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

方法二:

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

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

2个回答

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 也没有任何问题。

0

save() 方法要先update,(如果没有的话)再insert。
而create()方法直接insert。


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值