Python 非空约束失败:stories\u story.url
有人能解释一下为什么我得到的非空约束失败:stories\u story.url错误 当我试图“sumbit”一个故事(localhost/story)时,我得到了错误 这里有一些文件。如果你需要更多,请告诉我 型号.pyPython 非空约束失败:stories\u story.url,python,django,Python,Django,有人能解释一下为什么我得到的非空约束失败:stories\u story.url错误 当我试图“sumbit”一个故事(localhost/story)时,我得到了错误 这里有一些文件。如果你需要更多,请告诉我 型号.py class Story(models.Model): title = models.TextField(max_length=350) url = models.URLField(null=True, blank=True) points = mode
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"
@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})
视图.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"
@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,因为我不再需要它了。我进行了迁移,一切正常。除了我仍然得到相同的错误:notnull约束失败:stories\u story.url。我不明白这个问题是从我的代码中产生的 首先,检查您是否正在使用迁移,检查您的应用程序中是否有migrations dir,以及该目录中是否有一些迁移(文件不是
\uuuu init\uuuuuuuuupy
)
如果没有,您还没有对该应用程序使用迁移,因此要使其工作,必须将models.py
回滚到与数据库状态对应的状态。完成后,运行python manage.py makemigrations\u app\u name
并恢复models.py的当前状态
完成此操作后,运行python manage.py migrate\u app\u name--fake initial
,将初始迁移存储在迁移历史记录中
如果至少有一个迁移已读,或者如果您已完成所有“如果没有”部分,请运行
python./manage.py将迁移设置为您的应用程序名称
以创建新迁移,并运行python./manage.py migrate
以应用它们。您应该在更改模型.py
后进行并应用迁移。首先,检查您是否正在使用迁移,检查应用程序中是否有migrations dir,以及该目录中是否有一些迁移(除\uu init\uuuuuu.py
以外的文件)
如果没有,您还没有对该应用程序使用迁移,因此要使其工作,必须将models.py
回滚到与数据库状态对应的状态。完成后,运行python manage.py makemigrations\u app\u name
并恢复models.py的当前状态
完成此操作后,运行python manage.py migrate\u app\u name--fake initial
,将初始迁移存储在迁移历史记录中
如果至少有一个迁移已读,或者如果您已完成所有“如果没有”部分,请运行
python./manage.py将迁移设置为您的应用程序名称
以创建新迁移,并运行python./manage.py migrate
以应用它们。您应该在更改模型后进行迁移并应用迁移。py
您可能在创建表后将null=True,blank=True
添加到URLField。通过python manage.py dbshell
在数据库shell中键入ALTER TABLE stories\u story ALTER COLUMN url DROP NOT NULL
命令,或者更好地使用。我做到了!有修复程序吗?你的数据库服务器是什么?MySQL、postgreSQL、sqlite?我使用的是标准sqlite!我试着看了看南方,但你必须降级到django@ozgur我将命令放入dbshell,但什么也没发生。我只是尝试将它放在“python manage.py shell”中,但它返回了一个语法错误,箭头指向表。这个问题仍然没有解决。我应该在运行这些命令之前删除模型中url字段的约束吗?您可能在创建表之后将null=True,blank=True
添加到url字段。通过python manage.py dbshell
在数据库shell中键入ALTER TABLE stories\u story ALTER COLUMN url DROP NOT NULL
命令,或者更好地使用。我做到了!有修复程序吗?你的数据库服务器是什么?MySQL、postgreSQL、sqlite?我使用的是标准sqlite!我试着看了看南方,但你必须降级到django@ozgur我将命令放入dbshell,但什么也没发生。我只是尝试将它放在“python manage.py shell”中,但它返回了一个语法错误,箭头指向表。这个问题仍然没有解决。我应该在运行这些命令之前从模型中的url字段中删除约束吗?我有init.py文件以外的迁移。在完成了你推荐的最后一段之后,我仍然会遇到同样的错误。我还能做什么?你有多少次迁移?你能在你的问题上展示它们吗?我有init.py文件以外的迁移。在完成了你推荐的最后一段之后,我仍然会遇到同样的错误。我还能做什么?你有多少次迁移?你能让他们看看你的问题吗?