【问题标题】:ProgrammingError at "url" relation "app_model" does not exist LINE 1: SELECT COUNT(*) AS "__count" FROM "app_model"ProgrammingError at "url" 关系 "app_model" 不存在 LINE 1: SELECT COUNT(*) AS "__count" FROM "app_model"
【发布时间】:2018-04-13 21:11:24
【问题描述】:

我已经搜索了有关此错误的每个 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”。我仍然遇到同样的错误。

这个模型(见下面的代码)是非常基本的。我的项目中有几个其他模型,它们在管理中工作得很好,但只是这个特定的模型不起作用。

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',
    }
}

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)),
            ],
        ),
    ]

ma​​nage.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)

【问题讨论】:

  • 为此应用创建的迁移看起来如何?
  • @schwobaseggl 以下是“manage.py migrate”当前所说的内容:要执行的操作:应用所有迁移:帐户、管理员、身份验证、内容类型、manage_listings、会话运行迁移:没有要应用的迁移。
  • 可以发accounts/migrations/0001_initial.py的内容吗?
  • 我还应该提到 AgentBasicInfo 附加到 ModelForm,并且 ModelForm 正在用于处理 2 种不同表单的基于函数的视图中。
  • @schwobaseggl 刚刚发布

标签: python django migrate makemigrations


【解决方案1】:

打开数据库命令行。

python manage.py dbshell

试试这个

delete from django_migrations where app='app_name';

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

【讨论】:

    【解决方案2】:

    我也遇到了这个问题,试过了:

    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 存储库的人有所帮助。欢迎大家指正。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 2021-04-06
      • 2023-03-14
      相关资源
      最近更新 更多