使用foreignkey在Django中抽象基类继承

9 python django inheritance abstract-class django-models

我正在我的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.
Run Code Online (Sandbox Code Playgroud)

我不知道怎么做是将EmailAddress,URL,PhoneNumbers(等)继承到子类中.可以这样做,如果是,怎么做?如果没有,我将非常感谢您对解决方法的建议.

Dan*_*man 6

我怀疑你会更好地使用链接的泛型关系,而不是试图将所有内容绑定到基类.通用关系允许您将诸如EmailAddress之类的模型链接到任何其他类,这似乎非常适合您的用例.