Django中使用ForeignKey实现抽象基类继承

9
我正在尝试在我的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等内容继承到子类中。这是否可行?如果可以,具体该如何操作?如果不行,希望您能提供解决方案。

1个回答

6

我认为你最好使用通用关系来建立链接,而不是试图将所有内容都绑定到一个基类。通用关系允许你将Email地址等模型与任何其他类联系起来,这似乎非常适合你的使用情况。


谢谢Daniel。昨天我一直在研究contenttypes和generic relations,但是还没有真正理解。现在我要尝试一下,看看它是否能解决问题。 - user194029

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接