Eu sempre leio que devo usar
model = Model(a=5, b=6)
model.save()
Mas acabei de ver que existe uma função de gerenciamento de criação, porque vi um aplicativo django de código aberto usando-a.
model = Model.objects.create(a=5, b=6)
print model.pk
1
Então, é sugerido usá-lo? Ou ainda é preferível usar o método .save. Estou supondo que objects.create tentará criá-lo de qualquer maneira, enquanto save pode salvar um objeto existente se o pk for especificado.
Estes são os documentos que encontrei: https://docs.djangoproject.com/en/dev/topics/db/queries/#creating-objects
Respostas:
Está na página "Referência da API QuerySet" , linkado a partir do índice da documentação.
fonte
p = Person.objects.create(first_name="Bruce", last_name="Springsteen")
equivalente a:
p = Person(first_name="Bruce", last_name="Springsteen") p.save(force_insert=True)
fonte
criar essencialmente faz o mesmo. abaixo está o código-fonte para criar.
def create(self, **kwargs): """ Creates a new object with the given kwargs, saving it to the database and returning the created object. """ obj = self.model(**kwargs) self._for_write = True obj.save(force_insert=True, using=self.db) return obj
ele cria uma instância e a salva.
fonte
Basicamente, esses dois métodos são equivalentes . O uso de
Model.objects.create
pode ser preferido, pois é mais adequado ao estilo do Django.fonte