Charfield ou Integerfield, Boas práticas?

227 views
Skip to first unread message

Sidon

unread,
Feb 9, 2017, 7:11:05 AM2/9/17
to Django Brasil
Pessoal,

Esses dias vi uma discussao interessante, um desenvolvedor defendendo que ao se definir o tipo de campo para codigos, por exemplo, devemos sempre definir como char e nunca int.
Na concepção dele, qualquer campo que não for envolvido em calculos ou incremento, dever ser definido com char.

O que acham? O que seria considerado como boa pratica no django?


Vinicius Assef

unread,
Feb 9, 2017, 10:27:34 AM2/9/17
to django...@googlegroups.com
Na minha opinião, isso não seria uma prática relacionada ao Django, mas à modelagem de dados.

Exemplos de campos que contém números, mas que eu uso como char: números de documentos (CPF, CNPJ, etc.), números de telefone, cep, etc.

Uma das questões para fazer assim tem a ver com precisão e tamanho de inteiros, que pode mudar conforme a plataforma. Sendo char, esse problema não existe.




--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Nilo Menezes

unread,
Feb 9, 2017, 10:57:21 AM2/9/17
to django...@googlegroups.com
É isso vem de muito tempo, antes do Django e do Python... é tão antigo que não consegui achar a referência.

Além da precisão, números inteiros não guardam zeros a esquerda.

Outra coisa é que as operações realizadas em telefones, cpfs, etc são mais próximas de strings que de números!
Você provavelmente nunca vai adicionar telefones, mas pode muito bem ter que acrescentar um dígito naquelas mudanças de números. Pesquisar códigos por prefixos, sufixos ou posição de caracter são também operações correntes.

Outra que você nunca sabe o formato correto...
+5592-3642-5000
6, 7, 8 dígitos, 9? 10? +55 ou 0055?
Com ou sem código de área... e por ai vai (DDD, DDI, operadora) 0xx11?
Países com letras:
0800-CALLME...

O módulo localflavor pode ajudar no Django:
https://django-localflavor.readthedocs.io/en/latest/localflavor/br/

[]
Nilo
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.


-- 
-------------------
Nilo Menezes (@lskbr)
Livro: http://python.nilo.pro.br/
Libro: https://www.librodepython.com

Neto

unread,
Feb 10, 2017, 3:22:39 PM2/10/17
to Django Brasil
Use int apenas se em algum momento você utilizar operações, soma, se x é maior que y, contador, incremental, números inteiros, ou algo do tipo.
Guardar telefone, cpf e etc como número inteiro é um erro, o máximo que pode fazer é remover formatação e salvar apenas os números sem espaço, mas sem char.

Gledson Cruz

unread,
Feb 11, 2017, 11:09:34 AM2/11/17
to Django Brasil
Eu tive um professor q sempre dizia isso: se vc precisa realizar alguma operação matematica, use integer...etc, senão use Char mesmo

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Gledson Cruz
Bacharel em Sistemas de Informação
Reply all
Reply to author
Forward
0 new messages