django sqlmigrate 陷入错误的迁移

问题描述 投票:0回答:2

我有一个小型餐厅模型,其中添加了一个接收 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 的错误

如何忽略此迁移?

python django migration
2个回答
0
投票

sqlmigrate
 [Django-doc]迁移,
sqlmigrate
仅打印它将在您最终迁移时运行的(SQL)查询。因此,这更像是一个调试工具,用于查看查询不起作用的原因。

因为您(尚未)在任何数据库上运行

0002

 迁移,因为这会导致错误。您可以删除迁移(与 
0003
 一起),然后再次运行 
makemigrations
 以创建 
new 0002
 迁移,然后进行迁移。


0
投票
你为什么要尝试003?仅尝试食物,或本地主机端口 8000。如果这些不起作用,请尝试 pyhton3,因为您的计算机可能正在运行不同的 python 版本,并发现图像是问题所在。也许您的格式也不被支持。因为您没有输入和图像的必要要求。我真的不确定,因为我自己仍在学习 Django,但我希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.