SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
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
models.Model
    ●   Atributos mais usados da class Meta:
           ●   db_table
           ●   managed
           ●   ordering
           ●   unique_together
           ●   verbose_name
           ●   verbose_name_plural 



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


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




                                   
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




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

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

                                      
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.




                                 
class Meta:




               
Model Fields
    ●   Atributos básicos


           ●   Null             ●   editable
           ●   Blank            ●   help_text
           ●   Choices          ●   primary_key
           ●   db_column        ●   Unique
           ●   db_index         ●   verbose_name
           ●   Default          ●   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




         
Contato


            Guilherme Kuhn
          <g.kuhn0@gmail.com>
            http://gkuhn.com




                    

Más contenido relacionado

Destacado

Marketing em redes e mídias sociais
Marketing em redes e mídias sociaisMarketing em redes e mídias sociais
Marketing em redes e mídias sociaisWagner M. Jordão
 
GBarton-OpEd-HSun-Radicalisation-22Apr15
GBarton-OpEd-HSun-Radicalisation-22Apr15GBarton-OpEd-HSun-Radicalisation-22Apr15
GBarton-OpEd-HSun-Radicalisation-22Apr15Greg Barton
 
13 08-20 Regulamentação do Mercado de M-payment - P&K Advogados - Hélo Ferreira
13 08-20 Regulamentação do Mercado de M-payment - P&K Advogados - Hélo Ferreira13 08-20 Regulamentação do Mercado de M-payment - P&K Advogados - Hélo Ferreira
13 08-20 Regulamentação do Mercado de M-payment - P&K Advogados - Hélo FerreiraCarvalho Comunicação
 
El blog en la enseñanza de idiomas.
El blog en la enseñanza de idiomas.El blog en la enseñanza de idiomas.
El blog en la enseñanza de idiomas.Carmen Vera
 
13 11-26 pesquisa mavam 2013 - acision e quanti - Silviane Rodrigues e Humber...
13 11-26 pesquisa mavam 2013 - acision e quanti - Silviane Rodrigues e Humber...13 11-26 pesquisa mavam 2013 - acision e quanti - Silviane Rodrigues e Humber...
13 11-26 pesquisa mavam 2013 - acision e quanti - Silviane Rodrigues e Humber...Carvalho Comunicação
 
Insertar Y Suprimir Enlace
Insertar Y Suprimir EnlaceInsertar Y Suprimir Enlace
Insertar Y Suprimir EnlaceCarmen Vera
 

Destacado (10)

Um Dia de Sol
Um Dia de Sol Um Dia de Sol
Um Dia de Sol
 
Internet
InternetInternet
Internet
 
Marketing A3 e a4
Marketing A3 e a4Marketing A3 e a4
Marketing A3 e a4
 
Universidad mifamiliaecci
Universidad mifamiliaecciUniversidad mifamiliaecci
Universidad mifamiliaecci
 
Marketing em redes e mídias sociais
Marketing em redes e mídias sociaisMarketing em redes e mídias sociais
Marketing em redes e mídias sociais
 
GBarton-OpEd-HSun-Radicalisation-22Apr15
GBarton-OpEd-HSun-Radicalisation-22Apr15GBarton-OpEd-HSun-Radicalisation-22Apr15
GBarton-OpEd-HSun-Radicalisation-22Apr15
 
13 08-20 Regulamentação do Mercado de M-payment - P&K Advogados - Hélo Ferreira
13 08-20 Regulamentação do Mercado de M-payment - P&K Advogados - Hélo Ferreira13 08-20 Regulamentação do Mercado de M-payment - P&K Advogados - Hélo Ferreira
13 08-20 Regulamentação do Mercado de M-payment - P&K Advogados - Hélo Ferreira
 
El blog en la enseñanza de idiomas.
El blog en la enseñanza de idiomas.El blog en la enseñanza de idiomas.
El blog en la enseñanza de idiomas.
 
13 11-26 pesquisa mavam 2013 - acision e quanti - Silviane Rodrigues e Humber...
13 11-26 pesquisa mavam 2013 - acision e quanti - Silviane Rodrigues e Humber...13 11-26 pesquisa mavam 2013 - acision e quanti - Silviane Rodrigues e Humber...
13 11-26 pesquisa mavam 2013 - acision e quanti - Silviane Rodrigues e Humber...
 
Insertar Y Suprimir Enlace
Insertar Y Suprimir EnlaceInsertar Y Suprimir Enlace
Insertar Y Suprimir Enlace
 

Similar a Django Models: estrutura, managers, querysets e admin

Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a Rômulo Jales
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade IIIJoão Lourenço
 
Minicurso Node.js fullstack IFCE - 2015-11-28
Minicurso Node.js fullstack IFCE - 2015-11-28Minicurso Node.js fullstack IFCE - 2015-11-28
Minicurso Node.js fullstack IFCE - 2015-11-28yuriploc
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoHelder Lopes
 
Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlHelder Lopes
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Padrões de projeto em linguagens funcionais
Padrões de projeto em linguagens funcionaisPadrões de projeto em linguagens funcionais
Padrões de projeto em linguagens funcionaisLay de Castro
 
Minicurso javascript
Minicurso javascriptMinicurso javascript
Minicurso javascriptLucas Aquiles
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Luís Cobucci
 
Reduzindo o boilerplate code com Lombok
Reduzindo o boilerplate code com LombokReduzindo o boilerplate code com Lombok
Reduzindo o boilerplate code com LombokWellington Pinheiro
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxSaraR49
 

Similar a Django Models: estrutura, managers, querysets e admin (20)

Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade III
 
Minicurso Node.js fullstack IFCE - 2015-11-28
Minicurso Node.js fullstack IFCE - 2015-11-28Minicurso Node.js fullstack IFCE - 2015-11-28
Minicurso Node.js fullstack IFCE - 2015-11-28
 
XML Schema (2002)
XML Schema (2002)XML Schema (2002)
XML Schema (2002)
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySql
 
01-Paradigmas.pdf
01-Paradigmas.pdf01-Paradigmas.pdf
01-Paradigmas.pdf
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Gisele
GiseleGisele
Gisele
 
Palestra cbq
Palestra cbqPalestra cbq
Palestra cbq
 
Padrões de projeto em linguagens funcionais
Padrões de projeto em linguagens funcionaisPadrões de projeto em linguagens funcionais
Padrões de projeto em linguagens funcionais
 
Minicurso javascript
Minicurso javascriptMinicurso javascript
Minicurso javascript
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
Implementação de
Implementação de Implementação de
Implementação de
 
Reduzindo o boilerplate code com Lombok
Reduzindo o boilerplate code com LombokReduzindo o boilerplate code com Lombok
Reduzindo o boilerplate code com Lombok
 
Introdução ao paradigma funcional com scala
Introdução ao paradigma funcional com scalaIntrodução ao paradigma funcional com scala
Introdução ao paradigma funcional com scala
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Clean code part 2
Clean code   part 2Clean code   part 2
Clean code part 2
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
 

Django Models: estrutura, managers, querysets e admin

  • 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.    
  • 9. Model Fields ● Atributos básicos ● Null ● editable ● Blank ● help_text ● Choices ● primary_key ● db_column ● Unique ● db_index ● verbose_name ● Default ● validators    
  • 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()    
  • 14. Managers ● .filter(*args, **kwargs) ● .filter(campo1='teste', campo2=1234) ● .filter(**{'campo1': 'teste'}) ● pesquisa = {'campo2': 1234} ● .filter(campo1='teste', **pesquisa) ● Retorna sempre um objeto Queryset    
  • 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)    
  • 21. 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)    
  • 22. Admin    
  • 23. Contato Guilherme Kuhn <g.kuhn0@gmail.com> http://gkuhn.com