python - Django makemigrations 有效,迁移失败,显示 "django.db.utils.IntegrityError: NOT NULL constraint failed"

标签 python django sqlite

我卡住了。 Django 1.7,SQLite3。

我更改了我的模型以添加 thumbnail 列,如 this tutorial 中所示.是这样的:

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    pub_date = models.DateTimeField('date published')
    likes = models.IntegerField(default=0)

    def __str__(self):
        return  self.title

现在是这样的:

from django.db import models
from time import time         

def get_upload_file_name(instance, filename):
    return  "uploaded_files/%s_%s" % (str(time()).replace(".", "_"), filename)

class Article(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    pub_date = models.DateTimeField('date published')
    likes = models.IntegerField(default=0) 
    thumbnail = models.FileField(upload_to=get_upload_file_name, null=True)

    def __str__(self):
        return  self.title

我用

将所有数据备份到一个 json 文本文件
python manage.py dumpdata article --indent=4 > article.json

然后执行

python manage.py makemigrations

有效。但是

python manage.py migrate

失败

django.db.utils.IntegrityError:NOT NULL 约束失败:article_article__new.thumbnail

现在,即使将 null=True 添加到 models.py 中的 thumbnail 行之后,运行 makemigrations 成功,migrate 以同样的方式失败。

我该怎么办?

最佳答案

我的应用名称(使用 python manage.py startapp 创建)名为 articles。这是新的 articles\migrations 文件夹,在多次出现 null-constraint 错误之后:

__init__.py
0001_initial.py
0002_auto_20140803_1540.py
0003_auto_20140803_1542.py
0004_auto_20140803_1450.py
0005_auto_20140803_1552.py
__pycache__
   __init__.cpython-34.pyc
   0001_initial.cpython-34.pyc
   0002_auto_20140803_1540.cpython-34.pyc
   0003_auto_20140803_1542.cpython-34.pyc
   0004_auto_20140803_1450.cpython-34.pyc
   0005_auto_20140803_1552.cpython-34.pyc

我删除了两个目录中除 0001 之外的所有 000* 文件。

然后我跑了

python manage.py makemigrations

python manage.py migrate

成功了。

感谢上帝 irc.freenode.net/django

关于python - Django makemigrations 有效,迁移失败,显示 "django.db.utils.IntegrityError: NOT NULL constraint failed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25109075/

相关文章:

python - 如何使用 django-tables2 动态更改 order_by?

Android 用光标删除行

java - Android SQLite,查询但找不到行,给我错误

python - DRF - 嵌套路由器 - 在 POST/PUT/PATCH 上创建/更新嵌套对象

python - 在没有模板渲染的情况下使用 django 提供 html 文件?

python - celery + sqlalchemy 以何种方式严重处理多个 worker ?

python - 在 Django 中将多个值从 url 转换为 json

python - 玛雅Python : OptionMenu Selection With Button

django - 南 Django 迁移

Android:如何获取列表项包含的所有数据?