我有一个小型餐厅模型,其中添加了一个接收 url 字符串的
item_image
属性。但我没有将 CharField
定义为 IntegerField
。然后我跑了 python manage.py makemigrations food
和 python manage.py sqlmigrate food 0002
。我报错了
ValueError: Field 'item_image' expected a number but got 'https://cdn-icons-png.flaticon.com/512/1377/1377194.png'.
我注意到了拼写错误并修复了它(将
IntegerField
更改为 CharField
)。
from django.db import models
# Create your models here.
class Item(models.Model):
def __str__(self) -> str:
return self.item_name
item_name = models.CharField(max_length=200)
item_desc = models.CharField(max_length=200)
item_price = models.IntegerField()
item_image = models.CharField(max_length=500,
default='https://cdn-icons-png.flaticon.com/512/1377/1377194.png')
但是我跑了之后
python manage.py sqlmigrate food 0002
错误仍然存在,当我将其更改为
python manage.py sqlmigrate food 0003
然后运行它。它没有给出错误,但现在要进行更改,我必须运行
python manage.py migrate
仍然给出迁移 no.0002 的错误
如何忽略此迁移?
sqlmigrate
[Django-doc]不迁移,sqlmigrate
仅打印它将在您最终迁移时运行的(SQL)查询。因此,这更像是一个调试工具,用于查看查询不起作用的原因。
因为您(尚未)在任何数据库上运行 0002
迁移,因为这会导致错误。您可以删除迁移(与
0003
一起),然后再次运行
makemigrations
以创建new
0002
迁移,然后进行迁移。