问题描述
我正在尝试迁移django项目,但出现此错误:
(venv) F:\repos\meetmetrics.eu>python src\manage.py migrate
Traceback (most recent call last):
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\backends\utils.py",line 84,in _execute
return self.cursor.execute(sql,params)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\backends\sqlite3\base.py",line 383,in execute
return Database.Cursor.execute(self,query,params)
sqlite3.OperationalError: no such table: blog_category
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "src\manage.py",line 21,in <module>
main()
File "src\manage.py",line 17,in main
execute_from_command_line(sys.argv)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\core\management\__init__.py",line 381,in execute_from_command_line
utility.execute()
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\core\management\__init__.py",line 375,in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\core\management\base.py",line 323,in run_from_argv
self.execute(*args,**cmd_options)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\core\management\base.py",line 361,in execute
self.check()
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\core\management\base.py",line 390,in check
include_deployment_checks=include_deployment_checks,File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\core\management\commands\migrate.py",line 65,in _run_checks
issues.extend(super()._run_checks(**kwargs))
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\core\management\base.py",line 377,in _run_checks
return checks.run_checks(**kwargs)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\core\checks\registry.py",line 72,in run_checks
new_errors = check(app_configs=app_configs)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\core\checks\urls.py",line 13,in check_url_config
return check_resolver(resolver)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\core\checks\urls.py",line 23,in check_resolver
return check_method()
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\urls\resolvers.py",line 399,in check
for pattern in self.url_patterns:
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\utils\functional.py",line 80,in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\urls\resolvers.py",line 584,in url_patterns
patterns = getattr(self.URLconf_module,"urlpatterns",self.URLconf_module)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\utils\functional.py",line 577,in URLconf_module
return import_module(self.URLconf_name)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\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 "F:\repos\meetmetrics.eu\src\try_django\urls.py",line 4,in <module>
from blog.views import blog_post_create_view
File "F:\repos\meetmetrics.eu\src\blog\views.py",in <module>
from .forms import BlogPostForm
File "F:\repos\meetmetrics.eu\src\blog\forms.py",line 16,in <module>
class BlogPostForm(forms.ModelForm):
File "F:\repos\meetmetrics.eu\src\blog\forms.py",in BlogPostForm
class Meta:
File "F:\repos\meetmetrics.eu\src\blog\forms.py",line 24,in Meta
'category': forms.Select(choices=category_list(),attrs={'class': 'form-control'}),File "F:\repos\meetmetrics.eu\src\blog\utils.py",line 6,in category_list
if not Category.objects.all().values_list('name','name').exists():
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\models\query.py",line 766,in exists
return self.query.has_results(using=self.db)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\models\sql\query.py",line 522,in has_results
return compiler.has_results()
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\models\sql\compiler.py",line 1110,in has_results
return bool(self.execute_sql(SINGLE))
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\models\sql\compiler.py",line 1140,in execute_sql
cursor.execute(sql,params)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\backends\utils.py",line 99,in execute
return super().execute(sql,line 67,in execute
return self._execute_with_wrappers(sql,params,many=False,executor=self._execute)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\backends\utils.py",line 76,in _execute_with_wrappers
return executor(sql,many,context)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\backends\utils.py",params)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\utils.py",line 89,in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\backends\utils.py",params)
django.db.utils.OperationalError: no such table: blog_category
这是我的 forms.py :
from django import forms
from .models import BlogPost
from .utils import category_list
class BlogPostForm(forms.Form):
title = forms.CharField()
content = forms.CharField(widget=forms.Textarea)
class BlogPostForm(forms.ModelForm):
class Meta:
model = BlogPost
fields = ['title','category','content','image','private','tags']
widgets ={
'title': forms.TextInput(attrs={'class': 'form-control'}),'category': forms.Select(choices=category_list(),'content': forms.Textarea(attrs={'class': 'form-control'}),'image': forms.FileInput(attrs={'class': 'form-control-file'}),'private': forms.CheckBoxInput(attrs={'class': 'form-check-label'}),'tags': forms.TextInput(attrs={'class': 'form-control'}),}
这是我的 utils.py :
from .models import Category
def category_list():
choice_list = []
if not Category.objects.all().values_list('name','name').exists():
choices = Category.objects.all().values_list('name','name')
for item in choices:
choice_list.append(item)
else:
choice_list.append('')
return choice_list
如果我从 forms.py 中删除此行,并尝试迁移所有可用的作品,则:
'category': forms.Select(choices=category_list(),attrs={'class': 'form-control'})
您有任何解决方案或想法吗?如果您需要更多信息,请问我,我不确定我是否已将您需要帮助的全部提供给您。
解决方法
我首先删除 pycache 目录,然后删除迁移文件夹中的所有内容,但不要在迁移中删除 init .py。之后,我将尝试迁移。