apresentacao models
DESCRIPTION
Apresentação básica sobre o ORM de models do djangoManagers, Querysets e admin site.TRANSCRIPT
![Page 1: Apresentacao models](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/2.jpg)
models.Model
● Atributos mais usados da class Meta:● db_table● managed● ordering● unique_together● verbose_name● verbose_name_plural
![Page 3: Apresentacao models](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/8.jpg)
class Meta:
![Page 9: Apresentacao models](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/12.jpg)
Model Fields
![Page 13: Apresentacao models](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/19.jpg)
Queryset
![Page 20: Apresentacao models](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081401/558a2a8bd8b42a2a028b4697/html5/thumbnails/22.jpg)
Admin