如何在GET
基于类的视图中覆盖CreateView
方法以生成有界形式,我的意思是它会为某些人设置预设值它在生成的表单中的字段(我需要使用一些默认值实例化表单,而不是使用默认情况下CreateView使用的表单的空白版本)。
我尝试查看https://ccbv.co.uk/projects/Django/1.6/django.views.generic.edit/CreateView/,但不太了解此课程中GET
方法的流程。
BaseCreateView
def get(self, request, *args, **kwargs):
self.object = None
return super(BaseCreateView, self).get(request, *args, **kwargs)
ProcessFormView
处理GET请求并实例化表单的空白版本。
def get(self, request, *args, **kwargs):
"""
Handles GET requests and instantiates a blank version of the form.
"""
form_class = self.get_form_class()
form = self.get_form(form_class)
return self.render_to_response(self.get_context_data(form=form))
我确切地覆盖了get来实例化我的表单,因为CreateView使用modelFormFactory来生成空表单。
答案 0 :(得分:3)
这不是绑定形式:绑定表单是从POST数据创建并经过表单验证的表单。
要为新表单提供初始数据,请覆盖get_initial
方法。或者,如果该数据是静态的,您可以提供类级initial
字典。
修改强>
def get_initial(self):
if request.GET.get('codereview-get'):
initial = {'stream_name': 'TROI'}
else:
initial = {}
return initial