ORM中创建或调用类之间的区别

时间:2018-11-22 11:53:25

标签: python django-models

假设我在Django模型中有一个名为Dude的类。

String

我可以通过调用class Dude(models.Model): id = models.BigIntegerField(primary_key=True) name = models.CharField(max_length=100) Dude.objects.create(name='Pepe')在数据库中创建Person的实例。

我的问题是有什么区别,哪种方法更好?

2 个答案:

答案 0 :(得分:1)

第一个首先在数据库中创建对象,然后可以使用它。

使用Dude(name='Pepe')会在调用.save()之前得到一个不在db中的对象

如果模型中有许多必填字段,则必须在.create()调用中包括所有字段。否则是相同的。

答案 1 :(得分:0)

Dude.objects.create(name='Pepe')行在数据库中创建对象并将其返回。通过检查其pk可以看到它已经保存在数据库中:

>>> obj = Dude.objects.create(name='Pepe')
>>> obj.pk
1

Dude(name='Pepe')行在内存中创建了对象,但尚未将其保存到数据库中:

>>> obj = Dude(name='Pepe')
>>> obj.pk                       # will be 'None'
>>> obj.save()
>>> obj.pk
1