【问题标题】:Django multiple model inheritance, django-push-notificationsDjango 多模型继承,django-push-notifications
【发布时间】:2015-05-13 22:38:14
【问题描述】:

我正在使用 Django 1.8 为移动应用程序编写后端。 django-push-notifications 库提供 GCMDevice 模型。问题是我已经有一个 Device 模型,其中包含一些必填字段和一些我不想丢失的逻辑。

我想做的是继承整个GCMDevice 功能并将它们调整为我的设备模型(顺便说一句,它继承了另一个提供空间数据字段的mixin,并带有我想要保留的自定义对象管理器集)。我读到了 3 种不同的 django 模型继承想法,但似乎都没有解决我的问题(保留经理,提供 django-push-notifications 功能,保留我的 Device 模型字段)。也许 OneToOne 协会会做这项工作?

想法:

class Device(MyMixin):
    gcm_device = models.OneToOneField(GCMDevice)
    my_other_field = models.TextField()

    def send_message(self, payload):
        self.gcm_device.send_message(payload)

【问题讨论】:

    标签: python django inheritance


    【解决方案1】:

    有什么理由需要继承?组合可以替代您尝试通过继承执行的操作吗?

    ----------------- 编辑后的答案 -----------------

    class Device(models.Model):
        ...
        gcm_device = models.OneToOneField(GCMDevice)
    

    我给出了最简单的情况,您也可以将 GCM 设备设置为主键。

    【讨论】:

    • 完全没有理由,我认为这是唯一的解决方案。好的,现在我知道关于组合的一般概念,但仍然不知道如何将其应用于 django 模型?你能举个例子吗?
    猜你喜欢
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多