Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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 Django中根据对象状态的不同形式_Python_Django_Django Models_Django Forms_Django Templates - Fatal编程技术网

Python Django中根据对象状态的不同形式

Python Django中根据对象状态的不同形式,python,django,django-models,django-forms,django-templates,Python,Django,Django Models,Django Forms,Django Templates,我有一个型号订单,带有字段状态。根据订单的状态,用户在尝试更新订单时应看到不同的内容 因此,如果订单处于挂起状态,我想显示一些字段,当用户成功提交表单时,订单状态应更改为其他状态,等等 我想我可以使用UpdateView并覆盖get\u form\u class,form\u valid,以及get\u template\u name。在get_form_类中,我可以根据状态返回要使用的form类,在form_valid中,我可以确保状态将更改为新状态 这是最好的方法吗?或者我应该为每个用例创建

我有一个型号
订单
,带有字段
状态
。根据订单的状态,用户在尝试更新订单时应看到不同的内容

因此,如果订单处于挂起状态,我想显示一些字段,当用户成功提交表单时,订单状态应更改为其他状态,等等

我想我可以使用UpdateView并覆盖
get\u form\u class
form\u valid
,以及
get\u template\u name
。在get_form_类中,我可以根据状态返回要使用的form类,在form_valid中,我可以确保状态将更改为新状态

这是最好的方法吗?或者我应该为每个用例创建单独的视图吗


当订单被接受时,我希望用户确认哪些实际上不需要任何字段。因此,可能最好对每个用例使用单独的视图或其他什么?

如果表单彼此非常不同,那么编写两个单独的表单并根据状态传递它们。您不需要两个不同的视图。我根据功能划分视图,所以再次强调,如果两种形式都满足两个不同的目的,那么从不同的视图为它们提供服务可能更好


另一种方法是使用单个表单,在模板中,您可以手动呈现表单字段,以根据不同的状态显示字段。是有关拆分字段的详细信息。

您是否有不同的表单,还是只想根据状态显示更多或更少的字段?您尝试过什么?您不必覆盖forn\u valid并获取\u模板名。让您的模板始终呈现
{{form}
,并让表单验证由表单完成,您通过了
get\u form\u class
。鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防无法访问目标站点或永久脱机。