首页 > 解决方案 > Django 多表继承子类的空查询集

问题描述

我有以下型号:

APP 1:

class User(AbstractBaseUser):
    # custom fields etc
    # NOT ABSTRACT


APP 2:

class SecondaryUser(User):
    # other custom fields

当我这样做时,SecondaryUser.objects.create(...)我得到了一个预期的实例:

In: SecondaryUser.objects.create(first_name='test', last_name='test', email='test@etest.com')
Out: <SecondaryUser>

这有一个 id 和预期的填充字段。我还可以查询基类并使用 django 生成的 1-1 字段进行继承来访问子类的字段:

User.objects.get(email='test@etest.com').secondaryuser.<some_field>

但是,当我这样做时,SecondaryUser.objects.all()它会返回一个空的查询集。并且模型管理员SecondaryUser显示了一个空列表视图(即使我SecondaryUser在管理员创建视图中创建了一个新实例)。

我觉得我遗漏了一些明显的东西,我需要能够在管理员中列出 SecondaryUser 实例。User类不能是抽象的。

编辑:已确认他们在数据库中:

mysql> SELECT * from <app2>_secondaryuser;
+-------------+---------------+-----------+
| user_ptr_id | <field_1>     | <field_2> |
+-------------+---------------+-----------+
|        123  |             0 |         0 |
|        124  |             0 |         0 |
|        125  |             1 |         0 |
+-------------+---------------+-----------+

标签: djangomulti-table-inheritance

解决方案


推荐阅读