如何解决即使在成功运行 makemigrations 和 migrate 命令后,models.py 中的更改也不会反映在网站上
我的models.py看起来像这样
from django.db import models
from django.urls import reverse
class Product(models.Model):
PRODUCTS_CATEGORY = [
('None','None'),('Sterilisation','Sterilisation'),('Cleaning Chemistry','Cleaning Chemistry'),('Bacterial Barrier','Bacterial Barrier'),('Waste Management','Waste Management'),('Instrument Tracking','Instrument Tracking'),('Validation','Validation')
]
prod_id = models.AutoField
prod_name = models.CharField(max_length=100)
prod_category = models.CharField(
max_length=100,choices=PRODUCTS_CATEGORY,default='None')
prod_desc = models.TextField()
prod_img = models.ImageField(upload_to='product_images')
slug = models.SlugField(null=True,blank=True)
def __str__(self):
return self.prod_name
我将 Sterilisation 的拼写更改为 Sterilization(将“s”替换为“z”)
我跑了 python manage.py makemigrations
并返回了 Migrations for 'website': website/migrations/0003_auto_20210407_1842.py - Alter field prod_category on product
然后我运行 python manage.py migrate
并返回 Operations to perform: Apply all migrations: admin,auth,contenttypes,sessions,website Running migrations: Applying website.0003_auto_20210407_1842... OK
但我没有看到网站上反映的变化。拼写仍然是Sterilisation! 这可能是什么原因?
PS:我正在使用 sqlite3,并且网站在 Ubuntu 20.04x64 上,这是一个 VPS。
解决方法
@azundo 给出了最简单的解决方案。
第 1 步:使用命令 python manage.py shell
进入您的 python django shell
第 2 步:使用命令 from <app_name>.models import <model_name>
在要进行更改的位置导入所需模型
第 3 步:使用以下命令
<model_name>.objects.filter(<column_name>='<old_spelling>').update(<column_name>='<new_spelling>')
就我而言,上面的命令是 Product.objects.filter(prod_category='Sterilisation').update(prod_category='Sterilization')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。