Estou com dúvida no seguinte trecho retirado da aula:
O problema é que a classe User já possui o atributo email. A solução é apagar o atributo da classe e delegar seu acesso para a classe User. Mas como faremos essa delegação? Adicionaremos uma propriedade (@property) em nossa classe:
from django.db import models
class Perfil(models.Model):
nome = models.CharField(max_length=255, null=False)
#sem email
telefone = models.CharField(max_length=15, null=False)
nome_empresa = models.CharField(max_length=255, null=False)
contatos = models.ManyToManyField('self')
usuario = models.OneToOneField(User, related_name="perfil")
@property
def email(self):
return self.usuario.email
# código posterior comentado
Ora, User também possui o atributo nome, porque não fazer o mesmo para esta propriedade?A verdade é que não entendi bem este passo. User e Perfil já estão relacionados, através do models.OneToOneField. Fazemos isto apenas para não guardar dados duplicados no Data Base, ou tem algum outro motivo?