23
Guilherme Kuhn 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

Apresentacao models

  • Upload
    gkuhn0

  • View
    472

  • Download
    0

Embed Size (px)

DESCRIPTION

Apresentação básica sobre o ORM de models do djangoManagers, Querysets e admin site.

Citation preview

Page 1: Apresentacao models

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

Page 2: Apresentacao models

   

models.Model

● Atributos mais usados da class Meta:● db_table● managed● ordering● unique_together● verbose_name● verbose_name_plural 

Page 3: Apresentacao models

   

models.Modeldb_table

● Nome da tabela que será usada.● db_table = 'PESSOA_FISICA'

● Oracle com usuarios● db_table = 'sisacad”.”PESSOA_FISICA'

Page 4: Apresentacao models

   

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

Page 5: Apresentacao models

   

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()

Page 6: Apresentacao models

   

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'),

)

Page 7: Apresentacao models

   

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.

Page 8: Apresentacao models

   

class Meta:

Page 9: Apresentacao models

   

Model Fields

● Atributos básicos

● Null● Blank● Choices● db_column● db_index● Default

● editable● help_text● primary_key● Unique● verbose_name● validators

Page 10: Apresentacao models

   

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

Page 11: Apresentacao models

   

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.

Page 12: Apresentacao models

   

Model Fields

Page 13: Apresentacao models

   

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()

Page 14: Apresentacao models

   

Managers

● .filter(*args, **kwargs)● .filter(campo1='teste', campo2=1234)● .filter(**{'campo1': 'teste'})● pesquisa = {'campo2': 1234}● .filter(campo1='teste', **pesquisa)

● Retorna sempre um objeto Queryset

Page 15: Apresentacao models

   

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

Page 16: Apresentacao models

   

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.

Page 17: Apresentacao models

   

Queryset

● Field Lookups● Complementos das consultas para cada campo.● exact, iexact, contains, icontains, in, gt, gte, lt, lte, 

startswith, istartswith, endswith, iendswith, range, isnull.

Page 18: Apresentacao models

   

Queryset

● A execução de um queryset é preguiçosa.● Podemos executar diversos filtros um sobre o outro, 

para termos uma consulta complexa no final.

Page 19: Apresentacao models

   

Queryset

Page 20: Apresentacao models

   

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)

Page 21: Apresentacao models

   

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)

Page 22: Apresentacao models

   

Admin

Page 23: Apresentacao models

   

Contato

Guilherme Kuhn

<[email protected]>

http://gkuhn.com