我在运行代码时会看到此错误:
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
。但是,如果您的数据库中已经有很多数据,并且希望避免制作新数据并迁移数据,则可以尝试再次手动将数据库同步。