O documento discute modelos no Django, incluindo a estrutura da classe Model, como os managers funcionam, querysets e suas funcionalidades, integração com o pacote admin e campos básicos de modelos.
1. Django Models
● Estrutura da classe models.Model
● Como funcionam os managers
● Queryset e seus atributos
● Como o django gera SQL?
● Consultas compexas
● Integração com o pacote admin
● Básico do admin
Guilherme Kuhn
1
2. models.Model
● Atributos mais usados da class Meta:
● db_table
● managed
● ordering
● unique_together
● verbose_name
● verbose_name_plural
3. models.Model
db_table
● Nome da tabela que será usada.
● db_table = 'PESSOA_FISICA'
● Oracle com usuarios
● db_table = 'sisacad”.”PESSOA_FISICA'
4. models.Model
managed
● O atributo managed informa se o django deve ou
não criar a tabela quando executado o syncdb
● Valores: True/False
● Default: True
5. models.Model
ordering
● Determina a ordenação padrão do model.
● Valores: Lista dos campos em sequencia.
● Não é usado quando:
● Orcamento.objects.order_by('valor')
● Orcamento.objects.filter().order_by('valor')
● É usado quando:
● Orcamento.objects.filter()
● Orcamento.objects.all()
6. models.Model
unique_together
● Usado unicamente na geração do SQL para a
criação das tabelas.
● Valores: Tupla unica, ou lista de tuplas
● unique_together = ('campo', 'campo1', 'campo2')
● unique_together = (
('campo1', 'campo2'),
('campo2', 'campo3'),
)
7. models.Model
verbose_name(_plural)
● Se este atributo não for informado por padão o
django irá usar o nome da classe.
● Usado no menu da interface de administração.
10. Model Fields
● Null – Relação com o Banco de Dados
● True/False Default: False
● Blank – Relação com o formulário – igual null.
● Choices – Mesmo comportamento do Forms.
● db_column – Informa o nome do campo na tabela.
● db_index – Cria um idice para o campo.
● True/False – Default: False
● Default – informa um valor padrão para o campo
● Pode ser um método
11. Model Fields
● Editable – Referencia ao Form. Se False, o campo
não aparece no formulário.
● help_text – mesmo comportamento do Forms.
● Primary_key – Indica se um campo é pk da tabela.
● Não é suportado chave primaria composta
● Apenas 1 campo deve ter primary_key = True.
● Unique – Cria o campo na tabela como sendo de
valor unico.
● Validators – lista com metodos para validar os
valores inseridos no campo.
13. Managers
● Interface de comunicação entre o model e o banco
de dados.
● Principais métodos:
● .filter(*args, **kwargs)
● .order_by(lista ou string)
● .get(*args, **kwargs)
● .all()
15. Managers
● .get(*args, **kwargs)
● Aceita o mesmo tipo de parametro que o .filter
● Retorna apenas 1 objeto sempre
● Caso não seja encontrado nenhum objeto joga
exception model.DoesNotExist
● Caso seja encontrado mais de 1 objeto, joga
exception model.MultipleObjectsReturned
16. Managers
● .all() Retorna um queryset com todos os objetos
cadastrados.
● .order_by(order)
● Retorna um queryset com os objetos ordenados
conforme a ordenação passada.
17. Queryset
● Field Lookups
● Complementos das consultas para cada campo.
● exact, iexact, contains, icontains, in, gt, gte, lt, lte,
startswith, istartswith, endswith, iendswith, range,
isnull.
18. Queryset
● A execução de um queryset é preguiçosa.
● Podemos executar diversos filtros um sobre o outro,
para termos uma consulta complexa no final.
20. Consultas complexas
● Objeto Q (from django.db.models import Q)
● Objetos Q podem ser passados para o manager ou
para um queryset.
● Sintaxe: ( | OR) (& AND)