Django

时间:2017-01-30 15:24:56

标签: django

我正在构建一个应用程序,用户可以在其中提交ThesisLink,其中包含其硕士或博士论文的元数据。在论文链接发布之前,审查编辑必须有可能更改字段(例如,在链接断开的情况下)或完全拒绝论文链接。提交者应在其论文链接被接受,接受某些更改或被拒绝时邮寄。

我得出结论,我想要某种UpdateView,其中模型的所有字段都已填写完毕,并准备由审查编辑器编辑。但我也想要不在模型上的字段,例如refusal_reasoneditor_comment。我想在发生变化时通过邮件通知用户。

如何扩展更新视图以执行此操作?或者我应该完全抛弃UpdateView并在FormView之上构建一些内容?

这是我到目前为止所做的:

# urls.py
urlpatterns = [
        url(r'^vet_thesislink/(?P<pk>[0-9]+)/$', views.VetThesisLink.as_view(), name='vet_thesislink')
]



# views.py
@method_decorator(permission_required(
    'scipost.can_vet_thesislink_requests', raise_exception=True),     name='dispatch')
class VetThesisLink(UpdateView):
    model = ThesisLink
    fields = ['type', 'discipline', 'domain', 'subject_area',
          'title', 'author', 'supervisor', 'institution',
          'defense_date', 'pub_link', 'abstract']
    template_name = "theses/vet_thesislink.html"

在模板中:

# templates/theses/vet_thesislink.html
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Update" />
</form>

1 个答案:

答案 0 :(得分:0)

您需要使用ModelForm创建自定义表单以及其他非模型字段,并使用form_class属性在UpdateView中使用它。