[英]Django - I cant migrate my database because of my forms.py
我正在尝试迁移我的 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 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 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", line 13, 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", line 17, 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, params)
File "F:\repos\meetmetrics.eu\venv\lib\site-packages\django\db\backends\utils.py", 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, params, many, context)
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\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", 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)
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(), attrs={'class': 'form-control'}),
'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。 在那之后,我会尝试迁移。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.