Code

Changes between Version 3 and Version 4 of DocPtDatabaseAPI


Ignore:
Timestamp:
10/08/06 13:52:41 (8 years ago)
Author:
mario.caseiro at gmail.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DocPtDatabaseAPI

    v3 v4  
    4343 
    4444Uma vez que você criou seus `data models`_, Django fornece automaticamente uma API de abstração de banco de dados para você criar, recuperar, atualizar e deletar objetos. Este documento descreve esta API . 
     45 
    4546 
    4647.. _`data models`: http://www.djangoproject.com/documentation/model_api/ 
     
    146147=================================== 
    147148 
    148 Para salver alterações em um objeto que já exista no banco de dados, use ``save()``.  
     149Para salvar alterações em um objeto que já exista no banco de dados, use ``save()``.  
    149150 
    150 Dado a instância ``b5`` do ``Blog``, que já fora salvo no banco de dados, este exemplo altera seu nome e atualiza seu registro no banco de dados::  
     151Dado a instância ``b5`` do ``Blog``, que já tenha sido salva no banco de dados, demonstramos no exemplo abaixo, como alterar seu nome e atualizar tal registro no banco de dados::  
    151152 
    152153    b5.name = 'New name' 
     
    157158O método ``save()`` não retorna valor algum. 
    158159 
     160Como Django decide entre UPDATE vs. INSERT 
     161---------------------------------------------------- 
     162 
     163Você deve ter notado que os objetos de banco de dados do Django utiliza o mesmo método ``save()`` para criar e alterar objetos. Django abstrai a necessidade de utilizar declarações SQL de ``INSERT`` ou ``UPDATE``. Especificamente, quando você chama ``save()``, Django segue este algorítimo: 
     164 
     165    * Caso o atributo chave-primária (primary-key) do objeto receba um valor que não resulte em ``False`` (assim como ``None`` ou strings vazias), Django executa uma query ``SELECT`` para determinar se já existe um registro com a chave-primária fornecida. 
     166    * Caso já exista um registro com a chave-primária forncida, Django executa uma query de ``UPDATE``. 
     167    * Se o atributo do chave-primária (primary-key) do objeto *não* recebeu valor algum, ou recebeu um valor que não tenha registro, Django executa um ``INSERT``. 
     168 
     169A grande sacada aqui é que você deve ter cuidado para não especificar explicitamente um valor de chave-primária (primary-key) ao salvar novos objetos quando você não puder garantir que o valor da chave-primária (primary-key) não esteja sendo utilizado. Para mais sobre estes aspectos, ver  "Especificando explicitamente valores auto-primary-key" , acima. 
     170 
    159171 
    160172