Django在基于类的视图中绑定表单 - CreateView类

时间:2015-05-14 15:25:53

标签: python django forms get django-class-based-views

如何在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来生成空表单。

1 个答案:

答案 0 :(得分:3)

这不是绑定形式:绑定表单是从POST数据创建并经过表单验证的表单。

要为新表单提供初始数据,请覆盖get_initial方法。或者,如果该数据是静态的,您可以提供类级initial字典。

修改

def get_initial(self):
    if request.GET.get('codereview-get'):
        initial = {'stream_name': 'TROI'}
    else:
        initial = {}
    return initial