Django 迁移错误:formisoformat argument must be string

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

我真的需要帮助来理解我在 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”是类的唯一对象。

这个错误是一堆回溯,最后它告诉我们在这一行中有一个“TypeError: fromisoformat: argument must be str”:return datetime.date.fromisoformat(value) 在 dateparse.py 文件中。

几天来我一直在寻找解决方案,但似乎找不到任何解决方案,我还没有完全理解 django 的功能,所以如果有人能告诉我如何解决这个问题,那就太好了.

谢谢你的时间。

python django string typeerror migrate
3个回答
1
投票

我有一个类似的问题,为了纠正它,我重置了迁移。

  1. 您必须删除项目中的所有迁移文件

浏览每个项目的应用程序迁移文件夹并删除里面的所有内容,除了 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

0
投票

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

null=True,
default=True,

应该是什么时候

null=True,
default=None,

0
投票

我想这对你有帮助。因为我遇到了同样的问题,但这对我有帮助。

  1. 您需要在删除类模型之前添加此代码,以便保留您的数据库文件。
#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. 保存模型并打开迁移文件夹并删除除init.py

    之外的所有文件、文件夹
  2. 不要触摸 db 文件。并进行迁移。

删除后;

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

default=default_date
,

再次保存并进行迁移。

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