我正在我的Django供电网站上尝试模型继承,以便遵守DRY。我的目标是使用一个名为BasicCompany的抽象基类来提供三个子类的公共信息:Butcher,Baker,CandlestickMaker(它们以各自的名称位于自己的应用程序中)。
每个子课程都需要可变数量的东西,如电子邮件地址,电话号码,URL等,数量从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.
我不知道怎么做是将EmailAddress,URL,PhoneNumbers(等)继承到子类中。可以这样做,如果是,怎么做?如果没有,我将非常感谢您对解决方法的建议。
答案 0 :(得分:6)
我怀疑使用generic relations获取链接会更好,而不是试图将所有内容绑定到基类。通用关系允许您将诸如EmailAddress之类的模型链接到任何其他类,这似乎非常适合您的用例。