假设我在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的实例。
我的问题是有什么区别,哪种方法更好?
答案 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