修改Django自带auth模块的表名

  项目基于一个已有的数据库进行开发,原来的开发框架是web2py,也自带了auth模块,所以原来的数据库中也有auth相关的表。在对Django进行migrate时就产生了冲突(因为库中已经有auth_user等三个表且结构不完全一样),为了不对原来的功能造成影响于是修改django自带auth模块的表名。

 

方法如下:

1.找到auth模块位置:Python安装环境目录/lib/python3.x/site-packages/django/contrib/auth

2.将auth目录下的migrations目录清空(__init__.py除外)

3.修改models.py文件(先备份一下)

依次找到User、Permission、Group三个model,在model的class Meta中增加db_table = "表名",例如Group

class Group(models.Model):
    """
    注释....
    """
    name = models.CharField(_('name'), max_length=150, unique=True)
    permissions = models.ManyToManyField(
        Permission,
        verbose_name=_('permissions'),
        blank=True,
    )

    objects = GroupManager()

    class Meta:
        verbose_name = _('group')
        verbose_name_plural = _('groups')
        db_table = "dj_auth_group"           #自定义表名

    def __str__(self):
        return self.name

    def natural_key(self):
        return (self.name,)

 再次执行python manage.py makemigrations / python manage.py migrate,数据库中auth模块相关的表名就都变化啦。

 

posted @ 2020-08-15 22:59  小伍子  阅读(541)  评论(0编辑  收藏  举报