Changes between Version 3 and Version 4 of DocPtDatabaseAPI


Ignore:
Timestamp:
10/08/2006 03:52:41 PM (9 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
Back to Top