Django中带外键的抽象基类继承
我正在我的Django网站上尝试模型继承,以遵循DRY原则(不要重复自己)。我的目标是创建一个叫做BasicCompany的抽象基类,用来提供三个子类(屠夫、面包师和蜡烛制造商)共有的信息。这些子类各自位于不同的应用中。
每个子类需要的东西,比如电子邮件地址、电话号码、网址等,数量不固定,可能从0个开始。所以我想在这些类和它们所指的公司之间建立一个多对一的关系,也就是ForeignKey关系。以下是我想象中的BasicCompany/models.py的大致样子:
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.
我不知道怎么把电子邮件地址、网址、电话号码(等等)继承到子类中。这能做到吗?如果可以,应该怎么做?如果不行,我也希望能得到一些替代方案的建议。