Django 从默认设置继承并重命名表

Django 从默认设置继承并重命名表,django,database,django-models,django-authentication,Django,Database,Django Models,Django Authentication,我想重命名来自Django的默认表。 Meta确实复制了表,但列完全不同 我怎么能带着它过来 发生这种情况的原因是,会话是一个具体的模型。这里发生的是,您指定要继承会话表。这是通过在SQL层中创建一个新表来实现的,该表除了包含额外字段外,还包含父表的OneToOneField,此外,它还充当主键。有关Django如何处理模型继承的更多信息,请参阅 如果您想要实现自己的会话模型,那么应该继承自。这是一个抽象模型,其中包含字段sesion\u key、session\u data和expire\

我想重命名来自Django的默认表。 Meta确实复制了表,但列完全不同 我怎么能带着它过来


发生这种情况的原因是,会话是一个具体的模型。这里发生的是,您指定要继承
会话
表。这是通过在SQL层中创建一个新表来实现的,该表除了包含额外字段外,还包含父表的
OneToOneField
,此外,它还充当主键。有关Django如何处理模型继承的更多信息,请参阅


如果您想要实现自己的会话模型,那么应该继承自。这是一个抽象模型,其中包含字段
sesion\u key
session\u data
expire\u date
。然后,您可以重写或“monkey patch”SessionStore的,它不复制表:它只是通过创建一个指向父表的指针来执行继承。实际上,我想重命名所有默认表。那我该怎么办?原来的应用程序非常好,我想在所有的名称都被调整后使用~@WKenny:通常情况下,你不能只是“猴子补丁”数据库名称。因此,除非您修补本地Django安装的源代码,否则这是不可能的,或者至少在没有很多“技巧”的情况下是不可能的,这可能会破坏一些逻辑。你到底为什么需要重命名数据库表?@WKenny:我试过编辑
env/lib/python3.6/site packages/django/contrib/sessions/models.py
,然后运行
makemigrations
,它编写了一个迁移“将会话表重命名为django_blablablabla”,如果以后有人迁移的话,然后该表被重命名。@WKenny:您在使用的虚拟环境中编辑了该表吗?我已经在Django-3.0和Django-2.2上测试过了,这两个版本都很有效。Willem真的感谢你!我发现我无法进行迁移的原因是由于虚拟环境。一旦我开始在cmd中激活并尝试makemigrations,它就像一个符咒!所有的默认表都将被重命名,但也使用默认函数,如Admin Auth等。