Django-由于我的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 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。之后,我将尝试迁移。