修改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模块相关的表名就都变化啦。