Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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 提交时的完整性错误_Python_Html_Mysql_Django - Fatal编程技术网

Python 提交时的完整性错误

Python 提交时的完整性错误,python,html,mysql,django,Python,Html,Mysql,Django,我正在创建这个应用程序,在那里我希望能够向管理员数据库报告一部电影。此时,我可以去看电影,然后单击“报告”,然后发送到报告表单模板。但是,当我单击此模板上的“报告”按钮时,我只得到以下信息,数据库中没有任何反应: 异常类型:IntegrityError 异常值:非空约束失败:board_report.reporter_id 有人能解决这个问题吗 报告表单.html {% extends "board/base.html" %} {% load crispy_forms_tags %} {% lo

我正在创建这个应用程序,在那里我希望能够向管理员数据库报告一部电影。此时,我可以去看电影,然后单击“报告”,然后发送到报告表单模板。但是,当我单击此模板上的“报告”按钮时,我只得到以下信息,数据库中没有任何反应: 异常类型:IntegrityError 异常值:非空约束失败:board_report.reporter_id

有人能解决这个问题吗

报告表单.html

{% extends "board/base.html" %}
{% load crispy_forms_tags %}
{% load materializecss %}
{% block content %}
<div class="valign-wrapper row login-box">
    <div class="col card hoverable s10 pull-s1 m6 pull-m3 l8 pull-l2">
        <form method="POST" action="" enctype="multipart/form-data">
            {% csrf_token %}
            <div class="card-content">
                <span class="card-title">Jusity why you want to report this film?</span>
                <div class="row">
                    {{ form|materializecss }}
                </div>
            </div>
            <div class="card-action right-align">
                <input type="reset" id="reset" class="btn-flat grey-text waves-effect">
                <input type="submit" class="btn green waves-effect waves-light" value="Report">
            </div>
        </form>
    </div>
</div>
{% endblock content %}
视图.py

class Report(models.Model):
    reason = models.TextField()
    reporter = models.ForeignKey(User, on_delete=models.CASCADE, related_name="Reporter")
    reports = models.ForeignKey(Film, on_delete=models.CASCADE)

    def __str__(self):  # pragma: no cover
        return f"{self.reports.title} reported by {self.reporter.username}"

    def get_absolute_url(self):  # pragma: no cover
        return reverse("film-detail", kwargs={"pk": self.pk})
class FilmReport(LoginRequiredMixin, CreateView):
    model = Report
    fields = ["reason"]

    def __str__(self):
        return self.title
urlpatterns = [
    path("", views.films_view, name="board-home"),
    path("film/add", FilmAddView.as_view(), name="film-add"),
    path("film/<int:pk>/", FilmDetailView.as_view(), name="film-detail"),
    path("film/<int:pk>/report", FilmReport.as_view(), name="film-report"),
]
url.py

class Report(models.Model):
    reason = models.TextField()
    reporter = models.ForeignKey(User, on_delete=models.CASCADE, related_name="Reporter")
    reports = models.ForeignKey(Film, on_delete=models.CASCADE)

    def __str__(self):  # pragma: no cover
        return f"{self.reports.title} reported by {self.reporter.username}"

    def get_absolute_url(self):  # pragma: no cover
        return reverse("film-detail", kwargs={"pk": self.pk})
class FilmReport(LoginRequiredMixin, CreateView):
    model = Report
    fields = ["reason"]

    def __str__(self):
        return self.title
urlpatterns = [
    path("", views.films_view, name="board-home"),
    path("film/add", FilmAddView.as_view(), name="film-add"),
    path("film/<int:pk>/", FilmDetailView.as_view(), name="film-detail"),
    path("film/<int:pk>/report", FilmReport.as_view(), name="film-report"),
]
urlpatterns=[
路径(“,views.films\u view,name=“board home”),
路径(“film/add”,FilmAddView.as_view(),name=“film add”),
路径(“film//”,FilmDetailView.as_view(),name=“film detail”),
路径(“film//report”,FilmReport.as_view(),name=“film report”),
]

这意味着您没有为
reporter
添加值(也没有为
报告添加值),因此数据库拒绝创建

您可以通过覆盖
form\u valid
方法来设置
reporter
reports
(到URL中的
pk
):

class FilmReportView(LoginRequiredMixin, CreateView):
    model = Report
    fields = ['reason']

    def form_valid(self, form):
        form.instance.reporter = self.request.user
        form.instance.reports_id = self.kwargs['pk']
        return super().form_valid(form)
class FilmReportView(LoginRequiredMixin,CreateView):
模型=报告
字段=['reason']
def表单_有效(自身、表单):
form.instance.reporter=self.request.user
form.instance.reports_id=self.kwargs['pk']
return super().form\u有效(form)
为视图实现
\uuuu str\uuuu
并不常见。此外,视图没有标题,因此
self.title
将不起作用

注意:在Django中,基于类的视图(CBV)通常有
视图
后缀,因此您应该 考虑将视图类重命名为<代码> FelMeRePview < /C> >,而不是<代码> FrimReals< /Calp>
这意味着您没有为
reporter
(也没有为
reports
)添加值,因此数据库拒绝创建

您可以通过覆盖
form\u valid
方法来设置
reporter
reports
(到URL中的
pk
):

class FilmReportView(LoginRequiredMixin, CreateView):
    model = Report
    fields = ['reason']

    def form_valid(self, form):
        form.instance.reporter = self.request.user
        form.instance.reports_id = self.kwargs['pk']
        return super().form_valid(form)
class FilmReportView(LoginRequiredMixin,CreateView):
模型=报告
字段=['reason']
def表单_有效(自身、表单):
form.instance.reporter=self.request.user
form.instance.reports_id=self.kwargs['pk']
return super().form\u有效(form)
为视图实现
\uuuu str\uuuu
并不常见。此外,视图没有标题,因此
self.title
将不起作用

注意:在Django中,基于类的视图(CBV)通常有
视图
后缀,因此您应该 考虑将视图类重命名为<代码> FelMeRePview < /C> >,而不是<代码> FrimReals< /Calp>
这意味着您没有为<代码>记者<代码>(也没有为<代码>电影<代码>)添加值。这意味着您没有为<代码>记者<代码>(也没有为<代码>电影<代码>)添加值。我实现了您的更改,错误消失了。现在我明白了:“view board.views.FilmReportView没有返回HttpResponse对象。它没有返回任何对象。”@Jonas:对不起,忘记了返回的
。但很可能记录已经在数据库中,它只是没有重定向到成功url。只是一个简单的问题。当我报告电影时,我会被重定向到数据库中的下一部电影。这是为什么?@Jonas:因为您没有在视图中定义
success\u url
,它将重定向到您创建的对象的
get\u absolute\u url
(这里是
报告
)。可能包含此url(有点“奇怪”)。有关更多信息,请参阅我实现了您的更改,错误消失了。现在我明白了:“view board.views.FilmReportView没有返回HttpResponse对象。它没有返回任何对象。”@Jonas:对不起,忘记了返回的
。但很可能记录已经在数据库中,它只是没有重定向到成功url。只是一个简单的问题。当我报告电影时,我会被重定向到数据库中的下一部电影。这是为什么?@Jonas:因为您没有在视图中定义
success\u url
,它将重定向到您创建的对象的
get\u absolute\u url
(这里是
报告
)。可能包含此url(有点“奇怪”)。有关更多信息,请参阅