2023.6.2

class django.views.generic.edit.UpdateView

显示用于编辑现有对象的表单视图,重新显示带有验证错误(如果有)的表单并保存对对象的更改。该视图使用从对象的模型类自动生成的表单(除非手动指定了表单类)。

祖先(MRO)

该视图从以下视图继承方法和属性。

django.views.generic.detail.SingleObjectTemplateResponseMixin

django.views.generic.base.TemplateResponseMixin

django.views.generic.edit.BaseUpdateView

django.views.generic.edit.ModelFormMixin

django.views.generic.edit.FormMixin

django.views.generic.detail.SingleObjectMixin

django.views.generic.edit.ProcessFormView

django.views.generic.base.View

属性

template_name_suffix

显示在 GET 请求中的 UpdateView 页面使用 '_form' 的 template_name_suffix。例如,将这个属性改为 '_update_form',对于一个更新对象的视图,例如 Author 模型,将导致默认的 template_name 为``'myapp/author_update_form.html'``。

object

当使用 UpdateView 时,你可以访问 self.object,也就是被更新的对象。

                   5.3修改视图UpdateView_django


视图类UpdateView是在视图类FormView和视图类DetailView的基础上实现的,它首先使用视图类DetailView的功能(功能核心类是SingleObjectMixin),通过路由变量查询数据表某条数据并显示在网页上,然后在视图类FormView的基础上,通过表单方式实现数据修改

                   5.3修改视图UpdateView_django_02


视图类index一共设置了8个属性,这些属性主要来自类TemplateResponseMixin、SingleObjectMixin、FormMixin和ModelFormMixin,这是实现视图类UpdateView的核心功能类。路由index的变量age对应视图类index的属性slug_url_kwarg,用于对模型字段age进行数据筛选。筛选结果将会生成表单form和personinfo对象,表单form是由类FormMixin的get_context_data()生成的,personinfo对象则由类SingleObjectMixin的get_context_data()生成,两者的数据都是来自模型PersonInfo。

运行MyDjango项目,在浏览器上访问127.0.0.1:8000/30.html,其中路由地址的13代表数据表index_personinfo的字段age等于30的数据,如图5-19所示。在网页上将表单name改为Tim并单击“确定”按钮,在数据表index_personinfo中查看字段age等于13的数据变化情况