Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 非空约束失败:stories\u story.url_Python_Django - Fatal编程技术网

Python 非空约束失败:stories\u story.url

Python 非空约束失败: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

有人能解释一下为什么我得到的非空约束失败: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 = 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文件以外的迁移。在完成了你推荐的最后一段之后,我仍然会遇到同样的错误。我还能做什么?你有多少次迁移?你能让他们看看你的问题吗?