繁体   English   中英

Django&Postgres:持续存在“ ProgrammingError:列不存在”

[英]Django & Postgres: persisting 'ProgrammingError: column does not exist'

我知道之前曾有人问过这个问题,但是我尝试了答案中建议的所有内容,但似乎都没有用。

问题:我的Django项目中有一个名为“ Accomm ”的模型类,其中存储了许多对象。 在我尝试检索“ Accomm ”的一个或多个实例的网页上,出现以下错误...

ProgrammingError at /
column objects_accomm.description does not exist
LINE 1: ...omm"."id", "objects_accomm"."mapped_location_id", "objects_a...

当我将新字段' description '迁移到' Accomm '模型时,开始出现此问题。

尝试过的解决方案:我尝试执行以下操作...清除所有Django迁移(使用--zero和--empty命令); 清除数据库(PostgreSQL 10); 清除迁移和数据库; 在Django项目settings.py文件中更改数据库的名称。 这些似乎都不起作用。 这里这里也都遵循了教程。

完整错误:

Django Version: 1.11.7
Python Version: 2.7.10
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.gis',
 'django.contrib.humanize',
 'django.contrib.messages',
 'django.contrib.sessions',
 'django.contrib.staticfiles',
 'rest_framework',
 'accounts',
 'maps',
 'objects',
 'social_django']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'social_django.middleware.SocialAuthExceptionMiddleware']

Traceback:

    File "/Library/Python/2.7/site-packages/django/core/handlers/exception.py" in inner
      41.             response = get_response(request)

    File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in _get_response
      187.                 response = self.process_exception_by_middleware(e, request)

    File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in _get_response
      185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

    File "/Users/jayt/project/main/views.py" in home
      21.     return render(request, 'home.html', {'accomm':accomm})

    File "/Library/Python/2.7/site-packages/django/shortcuts.py" in render
      30.     content = loader.render_to_string(template_name, context, request, using=using)

    File "/Library/Python/2.7/site-packages/django/template/loader.py" in render_to_string
      68.     return template.render(context, request)

    File "/Library/Python/2.7/site-packages/django/template/backends/django.py" in render
      66.             return self.template.render(context)

    File "/Library/Python/2.7/site-packages/django/template/base.py" in render
      207.                     return self._render(context)

    File "/Library/Python/2.7/site-packages/django/template/base.py" in _render
      199.         return self.nodelist.render(context)

    File "/Library/Python/2.7/site-packages/django/template/base.py" in render
      990.                 bit = node.render_annotated(context)

    File "/Library/Python/2.7/site-packages/django/template/base.py" in render_annotated
      957.             return self.render(context)

    File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
      177.             return compiled_parent._render(context)

    File "/Library/Python/2.7/site-packages/django/template/base.py" in _render
      199.         return self.nodelist.render(context)

    File "/Library/Python/2.7/site-packages/django/template/base.py" in render
      990.                 bit = node.render_annotated(context)

    File "/Library/Python/2.7/site-packages/django/template/base.py" in render_annotated
      957.             return self.render(context)

    File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
      72.                 result = block.nodelist.render(context)

    File "/Library/Python/2.7/site-packages/django/template/base.py" in render
      990.                 bit = node.render_annotated(context)

    File "/Library/Python/2.7/site-packages/django/template/base.py" in render_annotated
      957.             return self.render(context)

    File "/Library/Python/2.7/site-packages/django/template/defaulttags.py" in render
      321.             if match:

    File "/Library/Python/2.7/site-packages/django/db/models/query.py" in __nonzero__
      258.         return type(self).__bool__(self)

    File "/Library/Python/2.7/site-packages/django/db/models/query.py" in __bool__
      254.         self._fetch_all()

    File "/Library/Python/2.7/site-packages/django/db/models/query.py" in _fetch_all
      1118.             self._result_cache = list(self._iterable_class(self))

    File "/Library/Python/2.7/site-packages/django/db/models/query.py" in __iter__
      53.         results = compiler.execute_sql(chunked_fetch=self.chunked_fetch)

    File "/Library/Python/2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
      894.             raise original_exception

    Exception Type: ProgrammingError at /
    Exception Value: column objects_accomm.description does not exist
    LINE 1: ...omm"."id", "objects_accomm"."mapped_location_id", "objects_a...
                                                             ^

编辑: “ Accomm”的Models.py:

class Accomm(models.Model):
    mapped_location=models.ForeignKey(Location,related_name='l_accomms',null=True,blank=True,on_delete=models.SET_NULL)
    description=models.CharField(max_length=1000,null=True,blank=True)
    creator=models.OneToOneField(accountmodels.UserProfileModel,related_name='u_creator',null=True,on_delete=models.SET_NULL,blank=True)
    slug_key=models.SlugField(unique=True)
    is_active=models.BooleanField(default=False)

Views.py:

def home(request):
    user = request.user
    accomm = Accomm.objects.annotate(img_count=models.Count('a_image')).filter(img_count__gte=1)[:6]
    return render(request, 'home.html', {'accomm':accomm})

除了此处提出的解决方案外,还有其他想法吗?

当我的迁移变得不稳定时,我喜欢尝试的方法是:

python manage.py makemigrations
python manage.py migrate --fake

因此,这似乎使您的模型看起来像已添加了列,因此,从这里我将模型剪切并粘贴到临时文件中,保存模型并定期运行迁移,这将删除所有模型。 然后,将模型重新粘贴到models.py中,并再次运行迁移。 这似乎对我有用,也许有更好的方法来管理它,但是我对django还是比较陌生,因为我刚刚完成了我的第一个大项目。 真希望这对您有所帮助,如果不能让我知道,我可能还会为您提供其他服务!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM