python - 棘手的模型继承 - Django

标签 python django inheritance django-models django-orm

我认为这有点棘手,至少对我而言。 :)

所以我有 4 个模型PersonSingerBassistNinja

歌手、贝斯手和忍者继承自 Person。


问题是每个 Person 都可以是它的任何子类。

例如一个人可以是歌手和忍者。另一个人可以是贝斯手和忍者。另一个可以是所有三个。

我应该如何组织我的模型?


帮助将不胜感激!

最佳答案

多重继承不适用于数据库(您的 Django 模型最终确实需要向下映射到数据库),并且继承通常不是为“角色”建模的糟糕方式(因为人的角色确实会改变)。我会将 Singer、Bassist 和 Ninja 作为“角色”,不是作为 Person 的子类,并通过外键连接它们:

class Singer(models.Model):
    person = models.ForeignKey('Person')
    # ...

class Person(models.Model):
    # ...

关于python - 棘手的模型继承 - Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2489620/

相关文章:

python - 使用 Django REST 和 OAuth2 在测试脚本中获取 403 响应

c++ - C++ 中包含子类的基本抽象类数组

c# - 如何用抽象基础修复 "CA1810: Initialize reference type static fields inline"...?

python - 如何在 Google App Engine 上运行用 Python 编写的 MQTT 订阅者脚本

python - 更新字典列表中的列表值

python - uWSGI - Django Admin 的不同 Harakiri 超时

django - 什么是运行 Django 时的 StatReloader?

c++ - 基类构造函数对派生类 C++ 不可见

python - 有什么方法可以绕过 namedtuple 255 个参数限制?

python - 在MySql中,使用Python,如何根据变量插入表和列?