Django迁移错误:formisoformat参数必须是字符串

vsaztqbk  于 2023-03-13  发布在  Go
关注(0)|答案(3)|浏览(215)

我真的需要帮助来理解我在Django中遇到的这个错误,这个错误是在我向models.Model类添加了一堆对象之后突然出现的。即使我注解掉了所有可能引发错误的新对象,这个错误仍然存在。
我修改的代码是:

from django.db import models

# Create your models here.
class Band(models.Model):
    class Genre(models.TextChoices):
        Anime_music_vid= "AMV"
        Game_music_vid="GMV"
        Anime_sound_music_video="ASMV"

    name = models.fields.CharField(max_length=100)
genre=models.fields.CharField(choices=Genre.choices,max_length=5)
    channel = models.fields.URLField(null=True,blank=True)
    publication_date = models.fields.DateField(null=True,blank=True)
    creator= models.fields.CharField(max_length=100)
    link=models.fields.URLField(null=True,blank=True)

在修改之前,“name”是该类的唯一对象。
这个错误是一堆追溯,最后它告诉我们有一个“类型错误:格式:此行中参数必须为字符串“:返回www.example.com文件中的日期时间.日期.fromisoformat(值)dateparse.py。
我已经找了几天的解决方案了,但是似乎没有找到,我还没有完全理解django的功能,所以如果有人能告诉我如何解决这个问题,那就太好了。
谢谢你的时间。

xfb7svmp

xfb7svmp1#

我有一个类似的问题,为了纠正它,我重置迁移。
1.您必须删除项目中的所有迁移文件
检查每个项目的apps migration文件夹,删除其中的所有内容,除了init.py文件。
或者,如果您使用的是类Unix操作系统,您可以运行以下脚本(在您的项目目录中):

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc"  -delete

1.创建初始迁移并生成数据库架构:

python manage.py makemigrations
python manage.py migrate
f87krz0w

f87krz0w2#

可能没有回答OP的问题,但对我来说,我有一个打字错误:

null=True,
default=True,

当它应该

null=True,
default=None,
hs1ihplo

hs1ihplo3#

我想这个能帮到你。因为我也有同样的问题,但它帮了我。
1.您需要在删除类模型之前添加这些代码,以便保留您的db文件。

#models.py 

import datetime
ISO_date = "2021-12-18"
default_date= datetime.date.fromisoformat(ISO_date)

1.然后在模型类中设置default=default_date

class Mymodel(model.Model):
   Publication = model.DateField(default=default_date)

1.保存模型并打开migration文件夹,删除除****init**.py之外的所有文件和文件夹
1.不要碰
db**文件,并进行迁移。
删除后;

import datetime
ISO_date = "2021-12-18"
default_date= datetime.date.fromisoformat(ISO_date)

default=default_date
再次保存并进行迁移。

相关问题