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

django.db.utils.IntegrityError: NOT NULL constraint failed: bug_report_bug.project_id我的守则:-
我想做的是让用户报告任何一个项目的bug。因此,用户单击一个项目,然后获得一个bug报告表单,在那里他/她可以报告错误。每个bug都与其项目相连接。
Models.py
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
class BugReportForm(forms.ModelForm):
class Meta:
model = Bug
fields = ('bug_title', 'bug_description', 'screenshot')Views.py
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/
错误说,填补一个领域,我无法理解,因为我没有做到。此外,在使用管理仪表板表单时,我可以报告那里的任何错误。
发布于 2020-11-16 17:00:07
最近我遇到了这样的问题,在大量搜索SO、DRF官方文档和其他论坛之后,我看到了一个简单的评论,建议删除整个迁移文件夹并再次进行迁移。下面是一个简单的命令来删除项目中的迁移文件夹:
rm -f db.sqlite3 rm -r /迁移python manage.py makemigrations python manage.py迁移
请参阅djanjo-rest-framework 这里的正式文档。
我希望有一天这个能帮到别人。
发布于 2020-08-30 19:26:34
以下链接包含关于如何将外键字段添加到django表单的文档和代码示例:
基本上,您将使用django.forms.ModelChoiceField来允许用户选择默认情况下将呈现为select下拉列表的HTML。然后,在提交时,表单数据将相应地用Project在BugForm中的相应id发送到后端,form.save()将工作。
https://stackoverflow.com/questions/63661173
复制相似问题