ORM (Mapeamento Objeto-Relacional) do Django fornece uma maneira poderosa e flexível de interagir com seu banco de dados usando objetos Python. Um de seus recursos mais úteis é a herança de modelo, que permite estender e reutilizar modelos de maneira limpa e eficiente. Nesta postagem do blog, exploraremos as diferentes maneiras de estender os modelos do Django e forneceremos exemplos práticos para ajudá-lo a entender como aproveitar esse recurso em seus próprios projetos.
Django suporta vários tipos de herança de modelo:
As classes base abstratas permitem definir campos e métodos comuns que serão compartilhados entre vários modelos. Estas classes em si não são representadas no banco de dados; em vez disso, eles fornecem uma base para outros modelos herdarem.
Digamos que você queira criar um conjunto de modelos que compartilhem informações de contato comuns. Você pode definir uma classe base abstrata para armazenar essas informações.
from django.db import models class ContactInfo(models.Model): phone_number = models.CharField(max_length=15) email = models.EmailField() class Meta: abstract = True class Person(ContactInfo): first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) class Company(ContactInfo): company_name = models.CharField(max_length=255) address = models.CharField(max_length=255)
ContactInfo é uma classe base abstrata com campos phone_number e email. Tanto Pessoa quanto Empresa herdam esses campos, juntamente com seus próprios campos específicos.
A herança de múltiplas tabelas permite criar um modelo pai que é representado em sua própria tabela de banco de dados. Os modelos filhos herdam campos do modelo pai e possuem seus próprios campos adicionais. Cada modelo possui sua própria tabela no banco de dados, o que permite consultar e manipular os dados de forma independente.
Suponha que você tenha um modelo Person básico e queira adicionar campos adicionais específicos para funcionários.
from django.db import models class Person(models.Model): first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) class Employee(Person): employee_id = models.CharField(max_length=100) department = models.CharField(max_length=100)
Nesse caso, Employee estende Person com campos adicionais Employee_id e Department. Ambos os modelos possuem suas próprias tabelas de banco de dados e a tabela Employee inclui uma chave estrangeira para a tabela Person.
Os modelos proxy permitem modificar o comportamento de um modelo existente sem alterar seu esquema. Você pode usar modelos de proxy para adicionar métodos personalizados ou alterar o gerenciador de modelos padrão, sem afetar a tabela subjacente.
Suponha que você tenha um modelo Person e queira criar um modelo proxy para fornecer funcionalidades adicionais, como um método personalizado.
from django.db import models class Person(models.Model): first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) def full_name(self): return f"{self.first_name} {self.last_name}" class PersonProxy(Person): class Meta: proxy = True def greet(self): return f"Hello, my name is {self.full_name()}"
PersonProxy é um modelo de proxy que adiciona um método greet ao modelo Person. O esquema do banco de dados para Person permanece inalterado.
As classes base abstratas são úteis quando você tem campos e métodos que deseja reutilizar em vários modelos, sem criar tabelas de banco de dados desnecessárias.
A herança de múltiplas tabelas é ideal quando você precisa estender a funcionalidade de um modelo existente e manter um relacionamento claro entre os modelos pai e filho.
Modelos proxy são melhor usados quando você deseja adicionar novos comportamentos ou métodos personalizados a um modelo sem alterar seu esquema de banco de dados.
Estender modelos do Django é uma maneira poderosa de criar código reutilizável e de fácil manutenção. Esteja você compartilhando campos comuns com classes base abstratas, adicionando novos campos com herança de múltiplas tabelas ou personalizando o comportamento com modelos de proxy, o Django fornece as ferramentas que você precisa para construir aplicações robustas e escaláveis.
Sinta-se à vontade para experimentar essas estratégias de herança para ver como elas se encaixam em seus próprios projetos. Compreender e utilizar a herança de modelo pode melhorar muito seu fluxo de trabalho de desenvolvimento e levar a um código mais limpo e organizado.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3