我有一个 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] 删除。
我来说两句