| 43 | =================== |
| 44 | Referência do Model |
| 45 | =================== |
| 46 | |
| 47 | O model é a fonte única e definitiva dos seus dados, nele estão contidos os |
| 48 | campos essenciais e relacionamentos dos dados que você está arquivando. |
| 49 | Genericamente, cada model referencia a uma tabela no banco de dados. |
| 50 | |
| 51 | O básico: |
| 52 | |
| 53 | * Cada model é uma classe Python que é uma subclasse de |
| 54 | ``django.db.models.Model``. |
| 55 | * Cada atributo do model representa um campo na base de dados. |
| 56 | * Metadados do model (informações descritivas dos dados) vão para uma |
| 57 | classe interior nomeada ``Meta``. |
| 58 | * Metadados usados para o site de administração do Django vão para a |
| 59 | classe interior nomeada ``Admin``. |
| 60 | * A partir disso o Django oferece uma API de acesso ao banco de dados |
| 61 | gerada automaticamente, que é melhor explicada na |
| 62 | `Referência da API de Banco de Dados`_. |
| 63 | |
| 64 | Associado a esse documento existe o `repositório oficial de exemplos de |
| 65 | models`_.(No código fonte do Django, estes exemplos se encontram no |
| 66 | diretório ``tests/modeltests``.) |
| 67 | |
| 68 | .. _Referência da API de Banco de Dados: |
| 69 | http://www.djangoproject.com/documentation/db_api/ |
| 70 | .. _repositório oficial de exemplos de model: |
| 71 | http://www.djangoproject.com/documentation/models/ |
| 72 | |
| 73 | Exemplo rápido |
| 74 | ============== |
| 75 | |
| 76 | Este model exemplo define uma ``Person``, que possui um ``first_name`` e |
| 77 | ``last_name``:: |
| 78 | |
| 79 | from django.db import models |
| 80 | |
| 81 | class Person(models.Model): |
| 82 | first_name = models.CharField(maxlength=30) |
| 83 | last_name = models.CharField(maxlength=30) |
| 84 | |
| 85 | ``first_name`` e ``last_name`` são *campos* do model. Cada campo é |
| 86 | especificado como um atributo da classe, e cada atributo referencia a uma |
| 87 | coluna do banco de dados. |
| 88 | |
| 89 | O model ``Person`` acima criaria uma tabela no banco de dados como essa:: |
| 90 | |
| 91 | CREATE TABLE myapp_person ( |
| 92 | "id" serial NOT NULL PRIMARY KEY, |
| 93 | "first_name" varchar(30) NOT NULL, |
| 94 | "last_name" varchar(30) NOT NULL |
| 95 | ); |
| 96 | |
| 97 | Algumas notas técnicas: |
| 98 | |
| 99 | * O nome da tabela, ``myapp_person``, é automaticamente atribuído de |
| 100 | algum metadado do model podendo ser sobrescrito. Olhe _`Nome de |
| 101 | Tabelas` abaixo. |
| 102 | * Um campo ``id`` é adicionado automaticamente |
| 103 | |
| 104 | |