Por padrão, o ORM do Django cria, para cada tabela, um campo chamado id
e é ele quem identifica, unicamente, os registros no banco de dados. Porém, muitas vezes, precisamos que este campo possua outro nome (ou até outro tipo)… E é isso que veremos neste artigo.
Alterando nome e tipo da chave primária no Django ORM
Como exemplo para este artigo, vamos utilizar um model
simples, com apenas alguns campos, conforme podemos ver abaixo:
class Pessoa(models.Model):
nome = models.CharField(max_length=40, null=False, blank=False)
email = models.EmailField(null=False, blank=False)
def __str__(self):
return self.nome
Ao realizar a migração, a seguinte estrutura será criada no banco de dados:
Podemos notar que, apesar de não definir nenhum campo com o nome id
, o Django o criou automaticamente. Por padrão, este campo é do tipo int(11)
, não permite dados nulos e é utilizado para armazenar a chave primária da tabela. Porém, caso necessário, podemos alterar a estrutura deste campo facilmente utilizando o Django.
Para isso, a única coisa que precisamos fazer é criar um campo que será utilizado como primary_key
no model
do nosso projeto, como podemos ver abaixo:
class Pessoa(models.Model):
id_personalizado = models.CharField(max_length=20, primary_key=True)
nome = models.CharField(max_length=40, null=False, blank=False)
email = models.EmailField(null=False, blank=False)
def __str__(self):
return self.nome
Sendo assim, podemos notar que a única coisa necessária para alterar a chave primária de uma tabela é determinar o atributo primary_key=True
e, com isso, este campo será utilizado como chave primária no banco de dados:
Concluindo
Apesar de possuir diversas configurações padrões, o ORM do Django permite a personalização de várias delas. Neste artigo vimos o quão simples é alterar o nome da chave primária de um determinado model
.