django.db.utils.ProgrammingError: 运行 makemigrations 时关系“company_company”不存在

伊尔默·阿维拉·比利亚雷亚尔

我有一个 Django 应用程序,但是当我尝试运行 makemigrations 时出现错误:

  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedTable: relation "company_company" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "company_company"
                                          ^


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\core\management\_init_.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\core\management\_init_.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\core\management\base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\core\management\base.py", line 368, in execute
    self.check()
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\core\management\base.py", line 396, in check
    databases=databases,
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\core\checks\registry.py", line 70, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver
    return check_method()
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\urls\resolvers.py", line 408, in check
    for pattern in self.url_patterns:
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\utils\functional.py", line 48, in _get_
    res = instance._dict_[self.name] = self.func(instance)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\urls\resolvers.py", line 589, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\utils\functional.py", line 48, in _get_
    res = instance._dict_[self.name] = self.func(instance)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\urls\resolvers.py", line 582, in urlconf_module
    return import_module(self.urlconf_name)
  File "C:\Users\EDUARDO\AppData\Local\Programs\Python\Python37\lib\importlib\_init_.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\bpmdoc\config\urls.py", line 32, in <module>
    path ( "company/", include('core.company.urls'))
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\urls\conf.py", line 34, in include
    urlconf_module = import_module(urlconf_module)
  File "C:\Users\EDUARDO\AppData\Local\Programs\Python\Python37\lib\importlib\_init_.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\bpmdoc\core\company\urls.py", line 6, in <module>
    from core.company.views import CompanyCreateView, CompanyUpdateView, CompanyListView
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\bpmdoc\core\company\views.py", line 18, in <module>
    class CompanyCreateView(LoginRequiredMixin, ValidatePermissionRequiredMixin, CreateView):
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\bpmdoc\core\company\views.py", line 26, in CompanyCreateView
    algo = Company.objects.filter () .count()
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\db\models\query.py", line 411, in count
    return self.query.get_count(using=self.db)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\db\models\sql\query.py", line 515, in get_count
    number = obj.get_aggregation(using, ['_count'])['_count']
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\db\models\sql\query.py", line 500, in get_aggregation
    result = compiler.execute_sql(SINGLE)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1156, in execute_sql
    cursor.execute(sql, params)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\db\backends\utils.py", line 98, in execute
    return super().execute(sql, params)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\db\backends\utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\db\backends\utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\db\utils.py", line 90, in _exit_
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\EDUARDO\Desktop\ProyectoSoft\smarthbatch\venv\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "company_company" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "company_company"

这是矛盾的观点:

    class CompanyCreateView(LoginRequiredMixin, ValidatePermissionRequiredMixin, CreateView):
    model = Company
    form_class = CompanyForms
    template_name = 'company/create.html'
    success_url = reverse_lazy('company:company_list')
    permission_required = 'erp.add_company'

    try :
        Company.objects.get(id=1)        
        def get(self, request, **kwargs):
            return redirect('company:company_list')
    except ObjectDoesNotExist:
        pass

    def dispatch(self, request, *args, **kwargs):
        return super ().dispatch (request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        data = {}
        try:
            action = request.POST['action']
            if action == 'add':
                form = self.get_form()
                if form.is_valid():
                    data = form.save()
                    messages.success(request, f'Compañia creada satisfactoriamente!')
                else:
                    messages.error (request, form.errors)
            else:
                data['error'] = 'No ha ingresado datos en los campos'
        except Exception as e:
            data['error'] = str(e)
        return JsonResponse(data)

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['tittle'] = 'Configurar Compañia'
        context['entity'] = 'Configurar Compañia'
        context['action'] = 'add'
        context['list_url'] = reverse_lazy ('company:company_list')
        return context

这是来自公司应用程序的 url.py

from django.urls import path
# url media files
from django.conf import settings
from django.conf.urls.static import static

from core.company.views import CompanyCreateView, CompanyUpdateView, CompanyListView

app_name = 'company'

urlpatterns = [
    path ('add/', CompanyCreateView.as_view (), name='company_create'),
    path ('update/<int:pk>/', CompanyUpdateView.as_view (), name='company_update'),
    path('list/', CompanyListView.as_view(), name='company_list'),
]

urlpatterns += static(settings.MEDIA_URL,
                      document_root=settings.MEDIA_ROOT)

基本上我需要检查公司表中是否有任何行重定向到公司列表视图,否则重定向到公司创建视图

知道如何解决吗?

我不知道为什么这不能让我正确运行迁移

非常感谢您的帮助

伊尔默·阿维拉·比利亚雷亚尔

解决了!在我看来只是改变了这一点:

    try :
            Company.objects.get(id=1)        
            def get(self, request, **kwargs):
                return redirect('company:company_list')
        except ObjectDoesNotExist:
            pass
    
   def dispatch(self, request, *args, **kwargs):
     return super ().dispatch (request, *args, **kwargs)

对此:

def dispatch(self, request, *args, **kwargs):
  if Company.objects.exists():       
    def get(self, request, **kwargs):
        return redirect('company:company_list')
  return super (CompanyCreateView, self).dispatch (request, *args, **kwargs)

这种验证应该在 dispatch 方法中完成,这样在迁移到完全空的数据库时就不会出现 ProgrammingError 异常

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

django.db.utils.ProgrammingError:关系“ ...”不存在

django.db.utils.ProgrammingError:类型“ raster”不存在

django.db.utils.ProgrammingError:表不存在

Django Rest框架“ django.db.utils.ProgrammingError:关系“患者”不存在”

“ django.db.utils.ProgrammingError:关系“ auth_user”不存在” Django V2.0

运行初始makemigrations时的Django 1.9 django.db.utils.OperationalError

django.db.utils.ProgrammingError:无法加载:关系“”的列“”不存在

django.db.utils.ProgrammingError:关系“ bot_trade”不存在

django.db.utils.ProgrammingError:递归模型不存在关系

django.db.utils.ProgrammingError:OenBSD vps已经存在关系

Django测试失败,出现“ django.db.utils.ProgrammingError:关系“ django_content_type”不存在”

还有一个“django.db.utils.ProgrammingError:关系“device_gclouddevice”不存在”

django.db.utils.ProgrammingError:列am.amcanorder不存在

django.db.utils.ProgrammingError:类型“ int4range”不存在

django.db.utils.ProgrammingError:(1146,“表'med_portal.Custparent'不存在”)

找不到 django/mysql 表 - django.db.utils.ProgrammingError: (1146, "表 'trustline.authentication_user' 不存在")

syncdb django.db.utils.ProgrammingError时出错:关系django_migrations的权限被拒绝

django.db.utils.ProgrammingError:关系“choices_keyword”的列“image”已经存在

django.db.utils.ProgrammingError:使用heroku和djongo不存在column Calculator_calculation._id

解决“ django.db.utils.ProgrammingError:关系django_migrations的权限被拒绝”的步骤

django.db.utils.ProgrammingError:关系“ django_site_domain_v2339b81_uniq”已存在

Django makemigrations有效,迁移失败并显示“ django.db.utils.IntegrityError:NOT NULL约束失败”

Django 错误“django.db.utils.ProgrammingError:子查询有太多列”

Makemigrations错误:django.db.utils.OperationalError:没有这样的表

django.db.utils.ProgrammingError:“有序”第6行或附近的语法错误:

django.db.utils.ProgrammingError:“功能”处或附近的语法错误

ProgrammingError:关系“ django_session”不存在

Python Django-内部错误ProgrammingError关系不存在

ProgrammingError:关系“ django_site”不存在