即使有'null=True' 'NOT NULL constraint failed'



我在运行代码时会看到此错误:

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

我做错了什么?

,如果您删除或修改迁移文件,您的实际数据库可能会与模型文件同步,并且当您运行makemigrations时,即使文件也可能说未检测到的更改,即使文件与实际数据库不同。

您可以通过登录MySQL数据库并检查实际的空约束来验证这一点。您会看到它可能说它不能无效,即使您的文件说可以。

最简单的解决方案是创建一个新的数据库并运行migrate。但是,如果您的数据库中已经有很多数据,并且希望避免制作新数据并迁移数据,则可以尝试再次手动将数据库同步。

最新更新