【发布时间】:2020-05-31 13:01:00
【问题描述】:
【问题讨论】:
-
它不复制表:它只是通过创建一个指向 parent 表的指针来执行继承。
标签: django database django-models django-authentication
【问题讨论】:
标签: django database django-models django-authentication
发生这种情况的原因是Session 是一个具体的模型。这里发生的是您指定要继承 Session 表。这是在 SQL 层中通过创建一个新表来实现的,该表除了额外的字段外,还包含父表的 OneToOneField,此外它还充当主键。有关 Django 如何处理模型继承的更多信息,请参阅Multi-table inheritance in the documentation 部分。
如果你想实现你自己的会话模型,你应该继承AbstractBaseSession model [Django-doc]。这是一个抽象模型,具有sesion_key、session_data 和expire_date 作为字段。然后,您可以覆盖或“猴子补丁”get_model_class 的 SessionStore。
【讨论】:
env/lib/python3.6/site-packages/django/contrib/sessions/models.py,然后运行makemigrations,它写了一个迁移“Rename table for session to django_blabla”,如果稍后迁移,那么该表被重命名.