请有人解释一下为什么我得到一个NULL约束失败: stories_story.url错误。
当我试图“总结”一个故事(本地主机/故事)时,我会得到错误。
这是一些文件。如果你需要更多的话请告诉我。
models.py
class Story(models.Model):
title = models.TextField(max_length=350)
url = models.URLField(null=True, blank=True)
points = models.IntegerField(default = 1)
moderator = models.ForeignKey(User, related_name = 'moderated_stories')
category = models.ForeignKey(Category)
voters = models.ManyToManyField(User, related_name = 'liked_stories')
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
@property
def domain(self):
return urlparse(self.url).netloc
def __unicode__(self):
return self.title
class Meta:
verbose_name_plural = "stories" views.py
@login_required(login_url = "/login/")
def story(request):
if request.method == 'POST':
form = StoryForm(request.POST)
if form.is_valid():
story = form.save(commit = False)
story.moderator = request.user
story.save()
return HttpResponseRedirect('/')
else:
form = StoryForm()
return render(request, 'stories/story.html', {'form': form})编辑:
我完全删除了URLField,因为我不再需要它了。我运行了迁移程序,一切都很顺利。但我仍然得到相同的错误: NULL约束失败: stories_story.url。我不明白在我的代码中这个问题是从何而来的。
发布于 2015-10-06 22:14:40
首先,检查是否使用迁移,检查应用程序中是否存在迁移dir,以及该目录中是否存在迁移(__init__.py以外的文件)。
如果不是,您还没有为该应用程序使用迁移,因此要使其工作,必须回滚models.py以使其与数据库状态相对应。完成此操作后,运行python manage.py makemigrations your_app_name并恢复当前的models.py状态。
完成之后,运行python manage.py migrate your_app_name --fake-initial,这将在迁移历史记录中存储您的初始迁移。
如果至少有一个迁移提示,或者如果您完成了所有“如果不是”部分,那么运行python ./manage.py makemigrations your_app_name来创建新的迁移,并运行python ./manage.py migrate来应用它们。您应该在更改models.py后进行迁移并应用迁移。
https://stackoverflow.com/questions/32979989
复制相似问题