首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IntegrityError - NULL约束失败

IntegrityError - NULL约束失败
EN

Stack Overflow用户
提问于 2020-08-30 19:08:44
回答 2查看 3.8K关注 0票数 0

我面临的错误是,我正在尝试提交一个包含空必需字段的表单。

错误

代码语言:javascript
复制
django.db.utils.IntegrityError: NOT NULL constraint failed: bug_report_bug.project_id

我的守则:-

我想做的是让用户报告任何一个项目的bug。因此,用户单击一个项目,然后获得一个bug报告表单,在那里他/她可以报告错误。每个bug都与其项目相连接。

Models.py

代码语言:javascript
复制
class Bug(models.Model):
    reported_by: models.ForeignKey(User, on_delete=models.CASCADE)
    project = models.OneToOneField(Project, on_delete=models.CASCADE)
    bug_title = models.CharField(max_length=150)
    bug_description = models.TextField()
    screenshot = models.ImageField(blank=True, null=True, upload_to='Bug_Reports')
    date_posted = models.DateTimeField(default=timezone.now)


    def __str__(self):
        return 'Project: {}\nBug: {}'.format(self.project.title, self.bug_title)
    
    def get_absolute_url(self):
        return reverse("bugReport", kwargs={"pk": self.pk})

Forms.py

代码语言:javascript
复制
class BugReportForm(forms.ModelForm):
    class Meta:
        model = Bug
        fields = ('bug_title', 'bug_description', 'screenshot')

Views.py

代码语言:javascript
复制
def bug_register(request, pk):
    if request.method == 'POST':
        form = BugReportForm(request.POST)
        if form.is_valid():
            form.project = Project.objects.get(pk=int(pk))
            form.user = request.user
            print(form.project.id)
            form.save()
            messages.success(request, f'Thankyou for Reporting! We will review your issue and revert back soon,')
            return redirect('home')
        else:
            messages.warning(request, f'Please fill all the mandatory fields!')
    else:
        form = BugReportForm()
    return render(request, 'bug_report/report.html', {'form': form})

如您所见,我在URL中发送项目id,然后在视图中接受它,并查询项目类以获取对象。我无法脱身--我缺少什么?

http://127.0.0.1:8000/bugreport/1/

错误说,填补一个领域,我无法理解,因为我没有做到。此外,在使用管理仪表板表单时,我可以报告那里的任何错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-16 17:00:07

最近我遇到了这样的问题,在大量搜索SO、DRF官方文档和其他论坛之后,我看到了一个简单的评论,建议删除整个迁移文件夹并再次进行迁移。下面是一个简单的命令来删除项目中的迁移文件夹:

rm -f db.sqlite3 rm -r /迁移python manage.py makemigrations python manage.py迁移

请参阅djanjo-rest-framework 这里的正式文档。

我希望有一天这个能帮到别人。

票数 2
EN

Stack Overflow用户

发布于 2020-08-30 19:26:34

以下链接包含关于如何将外键字段添加到django表单的文档和代码示例:

基本上,您将使用django.forms.ModelChoiceField来允许用户选择默认情况下将呈现为select下拉列表的HTML。然后,在提交时,表单数据将相应地用ProjectBugForm中的相应id发送到后端,form.save()将工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63661173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档