我正在使用Django 2.2.3
和Postgres。
我正在尝试将测试添加到项目中,并在进行django.db.utils.ProgrammingError: relation "auth_group" does not exist
或python ./manage.py test
时在测试数据库创建步骤中不断遇到错误python ./manage.py test app_name
。
首先,我的建议是我有点弄乱了数据库模式-不久前,开发团队被要求从另一个数据库中导入多个表,而我是通过直接数据库完成的使用pgsql导入。比起我使用python manage.py inspectdb
创建模型并将它们放置到单独的应用程序中。
该命令创建了一个初始迁移,如下所示:
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name='SomeModelName',fields=[
(
'id',models.AutoField(auto_created=True,primary_key=True,serialize=False,verbose_name='ID'),),('some_other_field)',models.CharField(max_length=254,unique=True)),],options={'db_table': 'some_existing_table_name','managed': False,},
一切正常,因为比我创建并应用了多个迁移没有任何问题。但是现在我已经受困于该测试问题。
经过简短的调查,我发现inspectdb
也为某些身份验证表创建了模型,并且它们存在于带有旧表的该应用程序的models.py中。因此,在讨论的应用程序的初始迁移中存在以下几行:
migrations.CreateModel(
name='AuthGroup',('name',models.CharField(max_length=80,options={'db_table': 'auth_group',
和models.py:
class AuthGroup(models.Model):
name = models.CharField(unique=True,max_length=80)
class Meta:
managed = False
db_table = 'auth_group'
我认为这可能与一个问题有关,但是我尝试从INSTALLED_APPS
删除该应用程序,完全删除了该应用程序,但没有任何效果。在运行测试时我仍然遇到这些错误
任何想法,我该怎么做才能解决此问题? 也许是其他原因引起的?
PS 。此问题与South软件包的问题无关,因为该项目未使用它。
谢谢。
P.P.S。 INSTALLED_APPS
:
INSTALLED_APPS = (
[
'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.sites','django.contrib.messages','django.contrib.staticfiles',]
+ PROJECT_APPS
+ THIRD_PARTY_APPS
)