我运行代码时看到此错误:
NOT NULL constraint failed: blog_post.category_id
以下是代码:
class Post(models.Model):
class Meta:
verbose_name='Запись'
verbose_name_plural='Записи'
author = models.ForeignKey('auth.User')
category = models.ForeignKey('Theme', default=None, blank=True, null=True)
title = models.CharField(max_length=200,verbose_name='Заголовок')
text = RichTextField(verbose_name='Текст')
created_date = models.DateTimeField(verbose_name='Время создания',default=timezone.now)
published_date = models.DateTimeField(verbose_name='Время публикации',blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def approved_commentimages(self):
return self.comments.filter(approved_comment=True)
def __str__(self):
return self.title
class Theme(models.Model):
class Meta:
verbose_name='Категория'
verbose_name_plural='Категории'
title = models.CharField(verbose_name='Заголовок', max_length=40)
slug = models.SlugField(verbose_name='Транслит', null=True)
def __str__(self):
return self.title
我做错了什么?
答案 0 :(得分:1)
如果删除或修改迁移文件,实际数据库可能与模型文件不同步,以及运行makemigrations
时可能会发现没有检测到任何更改,即使文件与实际数据库。
您可以通过登录MySQL数据库并检查实际的空约束来验证这一点。您将看到它可能表示它不能为null,即使您的文件说它可以。
最简单的解决方案是创建一个新数据库并运行migrate
。但是,如果数据库中已有大量数据并且想要避免创建新数据并迁移数据,则可以尝试再次手动将数据库与模型同步。