我在更新现有Django项目中的模型时面临OperationalError。
这些是我在设置
中安装的应用程序INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"admin1_app.apps.Admin1AppConfig",
]
这是admin
中的代码from django.contrib import admin
from admin1_app.models import Product
class Product_admin(admin.ModelAdmin):
list_display=["product_name","product_price","product_qty","product_category"]
admin.site.register(Product,Product_admin)
models.py
from django.db import models
class Product(models.Model):
product_name=models.CharField(max_length=30)
product_price=models.IntegerField()
product_qty=models.IntegerField()
product_category=models.CharField(max_length=35)
def __str__(self):
return self.product_name
最初创建的程序只有3列,即product_name
,product_price
,product_qty
,并且一切都正确完成。后来,我将product_category
添加到这个现有的项目中,并且还运行了makemigrations
和migrate
命令。但是我遇到了一个操作错误。
OperationalError at /admin/admin1_app/product/
(1054, "Unknown column 'admin1_app_product.product_category' in 'field list'")
Request Method: GET
Request URL: http://127.0.0.1:8080/admin/admin1_app/product/
Django Version: 4.1.2
Exception Type: OperationalError
Exception Value:
(1054, "Unknown column 'admin1_app_product.product_category' in 'field list'")
Exception Location: C:Usersnarendraanaconda3libsite-packagespymysqlerr.py, line 143, in raise_mysql_exception
Raised during: django.contrib.admin.options.changelist_view
Python Executable: C:Usersnarendraanaconda3python.exe
Python Version: 3.9.12
我尝试使用python manage.py migrate --fake
命令。我不知道它是如何工作的,但只是复制了它从其他一些类似的错误解决方案在堆栈溢出,但没有结果我甚至尝试删除迁移文件夹中的0001_initial.py
文件,然后重复makemigrations
命令,但仍然没有用。
您可以简单地使用下面的命令手动迁移:
python3 manage.py makemigrations appname
python3 manage.py sqlmigrate appname 0001
python3 manage.py migrate
看是否能解决