Upload
gkuhn0
View
472
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Apresentação básica sobre o ORM de models do djangoManagers, Querysets e admin site.
Citation preview
Guilherme Kuhn1
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
models.Model
● Atributos mais usados da class Meta:● db_table● managed● ordering● unique_together● verbose_name● verbose_name_plural
models.Modeldb_table
● Nome da tabela que será usada.● db_table = 'PESSOA_FISICA'
● Oracle com usuarios● db_table = 'sisacad”.”PESSOA_FISICA'
models.Modelmanaged
● O atributo managed informa se o django deve ou não criar a tabela quando executado o syncdb
● Valores: True/False
● Default: True
models.Modelordering
● 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()
models.Modelunique_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'),
)
models.Modelverbose_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.
class Meta:
Model Fields
● Atributos básicos
● Null● Blank● Choices● db_column● db_index● Default
● editable● help_text● primary_key● Unique● verbose_name● validators
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
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.
Model Fields
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()
Managers
● .filter(*args, **kwargs)● .filter(campo1='teste', campo2=1234)● .filter(**{'campo1': 'teste'})● pesquisa = {'campo2': 1234}● .filter(campo1='teste', **pesquisa)
● Retorna sempre um objeto Queryset
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
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.
Queryset
● Field Lookups● Complementos das consultas para cada campo.● exact, iexact, contains, icontains, in, gt, gte, lt, lte,
startswith, istartswith, endswith, iendswith, range, isnull.
Queryset
● A execução de um queryset é preguiçosa.● Podemos executar diversos filtros um sobre o outro,
para termos uma consulta complexa no final.
Queryset
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)
Admin
● from django.contrib import admin● Classe admin.ModelAdmin
● list_display = ('campo', 'campo2', 'campo3',)● list_filters = ('campo3','campo4')● search_fields = ['campo','campo1']
● Registrando Admin.● admin.site.register(ModelName, AdminName)
Admin