Banner do topo
Logo
Translate
Imagem de capa da postagem
Cristiano

Full Stack Developer

Convertendo modelos do Django em dicionários Python com todos os campos intactos

Às vezes precisamos transformar um objeto de modelo (Model instance) em um dicionário. Isso é útil ao serializar dados, preencher formulários ou integrar com APIs.
É aí que entra a função model_to_dict, uma forma mais simples e nativa do Django para isso.

O que é model_to_dict

A função model_to_dict no Django é usada para converter uma instância de modelo do Django em um dicionário Python. Isso é particularmente útil quando você precisa serializar dados do modelo, por exemplo, para retorná-los como uma resposta JSON em uma API web ou para usá-los como dados iniciais para um ModelForm.

Veja como usá-lo:

from django.forms.models import model_to_dict
from myapp.models import Person

# Supondo que você tenha uma instância do modelo Person
person_instance = Person.objects.get(id=1)

# Converter a instância em um dicionário
person_dict = model_to_dict(person_instance)

print(person_dict)
# Exemplo de saída: {'id': 1, 'name': 'John Doe', 'age': 30}

Especificando campos (opcional)

É possível controlar quais campos são incluídos no dicionário usando o argumento fields:

 

from django.forms.models import model_to_dict
from myapp.models import Person

person_instance = Person.objects.get(id=1)

# Incluir apenas 'nome' (name) e 'idade' (age)
person_dict_subset = model_to_dict(person_instance, fields=['name', 'age'])

print(person_dict_subset)
# Exemplo de saída: {'name': 'John Doe', 'age': 30}

Excluindo campos (opcional)

Também podemos especificar campos a serem excluídos usando o argumento exclude:

 

from django.forms.models import model_to_dict
from myapp.models import Person

person_instance = Person.objects.get(id=1)

# Excluindo o 'id'
person_dict_excluded = model_to_dict(person_instance, exclude=['id'])

print(person_dict_excluded)
# Exemplo de saída: {'name': 'John Doe', 'age': 30}

Considerações importantes

Por padrão, o model_to_dict inclui apenas campos concretos e não manipula objetos relacionados (como relacionamentos ForeignKey ou ManyToManyField) recursivamente. Normalmente, ele armazena a chave primária dos objetos relacionados.

 

Campos com editable=False (que inclui os campos auto_now_add e auto_now) são automaticamente ignorados pelo model_to_dict, a menos que especificado explicitamente no argumento fields.

Dicas e boas práticas

  • Evite usar model_to_dict para serialização de grandes volumes de dados (prefira serializers do DRF).
  • Ótimo para preencher formulários (initial).
  • Se você usa ForeignKey, o model_to_dict retorna o ID da relação, e não o objeto completo.

 

O model_to_dict é simples, eficiente e ideal para tarefas rápidas de conversão — especialmente em contextos onde não vale a pena trazer dependências pesadas.

Tags:

#python #programação #desenvolvimentoweb #backend #aprendapython #tecnologia #dev

Comentários (0)