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_dictpara serialização de grandes volumes de dados (prefira serializers do DRF). - Ótimo para preencher formulários (
initial). - Se você usa
ForeignKey, omodel_to_dictretorna 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 #devVisualizações:
16Comentários (0)
Efetue login para poder comentar. Ainda não tem uma conta? Registre-se