Django:如何检查用户是否将所有字段留空(或初始值)?

Bel*_*dez 17 python django django-forms

我知道is_valid()在有界表格上检查是否输入了所有必需的数据.这不是我想要的.我想检查表单上是否填写了任何字段.

有任何想法吗?

阐述:

我想让用户选择不填写表格.但是,如果他们试图填写它(即:从一个字段中改变一个值,从它的初始值---通常为空值),我想验证它.

视图将是这样的:

def get_opinion(request):

    if request.method == 'POST':
        f = OpinionForm(request.POST)
        if form_is_blank(f):
            return HttpResponseRedirect(reverse('thank_you_anyway'))
        elif f.is_valid():
            #Process here
            return HttpResponseRedirect(reverse('thanks_for_participating'))
    else:
        initial = {'weekday': date.today().strftime('%A')}
        f = OpinionForm(initial=initial)

    return render_to_response(
        'get_opinion.html',
        {'form': f,},
        RequestContext(request)
    )
Run Code Online (Sandbox Code Playgroud)

我想要的是这form_is_blank()部分.

Bel*_*dez 25

我猜我必须回答我自己的问题.

显然,这是一个没有文档的Form功能:has_changed()

>>> f = MyForm({})
>>> f.has_changed()
False
>>> f = MyForm({})
>>> f.has_changed()
False
>>> f = MyForm({'name': 'test'})
>>> f.has_changed()
True
>>> f = MyForm({'name': 'test'}, initial={'name': 'test'})
>>> f.has_changed()
False
Run Code Online (Sandbox Code Playgroud)

所以这可以很好地替代form_is_blank()(当然还原).