“url”关系“app_model”中的ProgrammingError不存在第1行:SELECT COUNT(*)AS“__count”FROM“app_model”

时间:2017-11-01 14:06:38

标签: python django migrate makemigrations

我已经针对此错误搜索了每个Stack Overflow问题,但没有一个回复有帮助。我在尝试访问此特定模型的管理页面时遇到此错误(AgentBasicInfo)。

'manage.py makemigrations'工作正常。 'manage.py migrate'也运行正常。  'manage.py runserver'工作正常,整个网站运行正常,直到我尝试进入此模型的管理页面。

该应用已正确安装在settings.py的INSTALLED_APPS中。我正在使用Postgres作为数据库。

我试过......

  1. 删除迁移并重新运行makemigrations / migrate
  2. 删除此应用的整个迁移文件夹并重新运行makemigrations / migrate
  3. 从我的所有应用中删除所有迁移并重新运行makemigrations / migrate
  4. 我尝试过运行'manage.py migrate'和'mangae.py migrate app_name'。我仍然得到同样的错误。
  5. 这个模型(见下面的代码)非常基础。我的项目中还有其他几个模型,它们在管理员中运行得很好,但只是这个特定的模型不起作用。

    models.py

    class AgentBasicInfo(models.Model):
    
        preferred_email = models.EmailField()
        office_phone_number = models.IntegerField()
        brokerage_of_agent = models.CharField(max_length=50)
        agent_title = models.CharField(max_length=20)
    
        def __str__(self):
            return self.preferred_email
    

    settings.py

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'postgres',
            'USER': 'postgres',
            'PASSWORD': 'lagger123',
            'HOST': '127.0.0.1',
            'PORT': '5432',
        }
    }
    

    Picture of the error for reference

    0001_initial.py

    from __future__ import unicode_literals
    
    from django.db import migrations, models
    
    
    class Migration(migrations.Migration):
    
        initial = True
    
        dependencies = [
        ]
    
        operations = [
            migrations.CreateModel(
                name='AgentBasicInfo',
                fields=[
                    ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                    ('preferred_email', models.EmailField(max_length=254)),
                    ('office_phone_number', models.IntegerField()),
                    ('brokerage_of_agent', models.CharField(max_length=50)),
                    ('agent_title', models.CharField(max_length=20)),
                ],
            ),
        ]
    

    manage.py showmigrations的输出:

    accounts
     [X] 0001_initial
    admin
     [X] 0001_initial
     [X] 0002_logentry_remove_auto_add
    auth
     [X] 0001_initial
     [X] 0002_alter_permission_name_max_length
     [X] 0003_alter_user_email_max_length
     [X] 0004_alter_user_username_opts
     [X] 0005_alter_user_last_login_null
     [X] 0006_require_contenttypes_0002
     [X] 0007_alter_validators_add_error_messages
     [X] 0008_alter_user_username_max_length
    contenttypes
     [X] 0001_initial
     [X] 0002_remove_content_type_name
    coresite
     (no migrations)
    databases
     (no migrations)
    manage_listings
     [X] 0001_initial
    search_listings
     (no migrations)
    sessions
     [X] 0001_initial
    teams
     (no migrations)
    

2 个答案:

答案 0 :(得分:1)

打开db命令行。

python manage.py dbshell

试试这个

delete from django_migrations where app='app_name';

然后删除迁移文件并运行迁移命令。

答案 1 :(得分:0)

我也有这个问题并尝试过:

python manage.py dbshell

但后来我收到了这个错误:

CommandError: You appear not to have the 'psql' program installed or on your path.

这是由于 windows 在我的环境路径中找不到 psql。 作为替代方案,您可以通过还原更改来完成它(也就是说,如果您在 git 存储库中进行了以前的更改。

对我来说,我使用了这种方法:

git checkout <commit hash> (which did not have the error)

然后拉取更改:

git pull <remote> <branch>

最后:

git push origin main

希望这对拥有 git 存储库的人有所帮助。我欢迎任何更正。