Django Application:指向抽象类的外键

Rau*_*wal 3 python django django-models

我正在尝试设计一个框架来帮助实现复杂的Web流程.该框架将提供可以由子应用程序继承和实现的抽象类.现在,你可以看到我的抽象类Action有一个带有Stage的外键.因为,它有一个外键,它不能被抽象,因为它有自己的表.所以,如果我有2个实现应用程序,那么我的第一个应用程序可以看到所有阶段本身以及其他应用程序.我可以在查询中进行一些调整以避免这种情况.但我想知道是否有解决方案,我的实现Action类可以直接指向Inheriting Stage类.

parent_app/models.py

class Stage(models.Model):
   name = models.CharField(max_length=255)

class Action(models.Model):
    stage = models.ForeignKey(Stage)
    class Meta:
       abstract = True
Run Code Online (Sandbox Code Playgroud)

sub_app1/models.py

class StageImpl1(Stage):
    pass

class ActionImpl1(Action):
    ...
Run Code Online (Sandbox Code Playgroud)

sub_app2/models.py

class StageImpl2(Stage):
    pass

class ActionImpl2(Action):
    ...
Run Code Online (Sandbox Code Playgroud)

更新:

目前的情况是:

ActionImpl1有一个Stage键的外键

我将拥有的是:

ActionImpl1有一个带有StageImpl1的外键

Rei*_*ees 7

抽象类是不存在的类.它被用作其他类的基础.它永远不会被初始化.

不存在的东西不能有外键指向它!

如果你想要指出几种不同的类:泛型关系,那就要看一些东西了.这是Django的内置方式,可以在许多不同的对象上看起来像是一个外键.