用foreignkey在Django中继承抽象基类

2024-10-01 11:40:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在我的Django-powered站点上继承模型,以便坚持DRY。我的目标是使用一个名为BasicCompany的抽象基类来提供三个子类的公共信息:Butcher、Baker、CandlestickMaker(它们位于各自的应用程序中各自的名称下)。在

每个子类都需要可变数量的东西,如电子邮件地址、电话号码、url等,其数量范围从0到更大。所以我想在这些类和它们所指的公司之间建立多对一/外键关系。这大概是我想象的BasicCompany/模型.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(等等)继承到子类中。能做到吗?如果可以,怎么做?如果没有,我会很感激你关于解决办法的建议。在


Tags: djangonamefrom模型importurl数量models
1条回答
网友
1楼 · 发布于 2024-10-01 11:40:32

我想您最好使用generic relations作为链接,而不是尝试将所有内容绑定到基类。泛型关系允许您将EmailAddress之类的模型链接到任何其他类,这似乎很适合您的用例。在

相关问题 更多 >