/NOT NULL约束处的IntegrityError失败:todolist\u todolist.ischecked

2024-04-20 07:02:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是什么导致了这个错误, 删除迁移文件夹,然后再次执行makemigrations todolistmigrate。所有这些努力都白费了

models.py

class Category(models.Model):
    name = models.CharField(max_length=100)

    class Meta:
        verbose_name = ("Category")
        verbose_name_plural = ("Categories")
    def __str__(self):
        return self.name

class ToDoList(models.Model):
    title = models.CharField(max_length=200)
    content = models.CharField(max_length=500)
    created_on = models.DateField(default=timezone.now().strftime("%Y-%m-%d"))
    due_date = models.DateField(default=timezone.now().strftime("%Y-%m-%d"))
    category = models.ForeignKey(Category,on_delete=models.DO_NOTHING,default="general",null=True, blank=True) //kept blank and null field true


    class Meta:
      ordering = ["-created_on"]
    def __str__(self):
        return self.title

views.py

def index(request):
    ToDos = ToDoList.objects.all()
    catogories = Category.objects.all()

    if request.method == 'POST':
        if "taskAdd" in request.POST:
            title = request.POST["description"]
            category = request.POST["category_select"]
            date = str(request.POST["date"])
            content = title + "--" + date + "--" + category


            ToDo = ToDoList(
                title = title,
                content = content,
                due_date = date,
                category = Category.objects.get(name=category),
                )
            ToDo.save()
            return redirect("/")

        if "taskDelete" in request.POST:

            checkboxlist = request.POST["checkedbox"]

            for todo_id in checkboxlist:
               todo = ToDoList.objects.get(id=int(todo_id))
            todo.delete()

    return render(request,"index.html",{"ToDos" : ToDos,"catogories" : catogories})

0001_initaly.py//迁移代码

  migrations.CreateModel(
            name='ToDoList',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=200)),
                ('content', models.CharField(max_length=500)),
                ('created_on', models.DateField(default='2020-03-29')),
                ('due_date', models.DateField(default='2020-03-29')),
                ('category', models.ForeignKey(blank=True, default='general', null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='todolist.Category')),
            ],
            options={
                'ordering': ['-created_on'],
            },
        ),

错误图片 enter image description here

admin/todolist pic//不包含ischecked字段 enter image description here

提前谢谢


Tags: nametruedefaultdatetitleonmodelsrequest
1条回答
网友
1楼 · 发布于 2024-04-20 07:02:00

删除迁移文件夹之前,您必须将该应用迁移到零(它将删除该应用的所有表):

python manage.py migrate yourapp zero

因为数据库仍处于已删除迁移文件的状态。仅仅删除这些文件不会改变您的数据库结构。尝试还原您的删除、迁移,然后删除迁移文件夹。如果无法恢复文件夹,则必须手动清除该表

相关问题 更多 >