Pergunta

Eu estou tentando herança modelo no meu Django powered local, a fim de aderir a DRY. Meu objetivo é usar uma classe base abstrata chamada BasicCompany para fornecer a informação comum para três classes filhas:. Açougue, padaria, CandlestickMaker (eles estão localizados em seus próprios aplicativos em seus respectivos nomes)

Cada uma das classes criança tem uma necessidade de um número variável de coisas como endereços de email, números de telefone, URLs, etc, que variam em número de 0 e para cima. Então, eu quero a / ForeignKey relacionamento muitos-para-um entre essas classes e a empresa a que se referem. Aqui é mais ou menos o que eu imagino BasicCompany / models.py parecendo:

from django.contrib.auth.models import User
from django.db import models

class BasicCompany(models.Models)
    owner = models.ForeignKey(User)
    name = models.CharField()
    street_address = models.CharField()
    #etc...

    class Meta:
        abstract = True

class EmailAddress(models.model)
    email = models.EmailField()
    basiccompany = models.ForeignKey(BasicCompany, related_name="email_addresses")

#etc for URLs,  PhoneNumbers, PaymentTypes.

O que eu não sei como fazer é herdar emailAddress, URLs, phoneNumbers (etc) para as classes filho. isso pode ser feito, e se sim, como? Se não, eu gostaria de receber seus conselhos sobre soluções alternativas.

Foi útil?

Solução

Eu suspeito que você vai ser melhor com relações genéricas para os links, em vez de tentar amarrar tudo a uma classe base. relações genéricas permitem que você vincular um modelo, como EmailAddress a qualquer outra classe, o que parece ser um bom ajuste com o seu caso de uso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top