【问题标题】:django forms, cleaned_data is emptydjango 表单,cleaned_data 为空
【发布时间】:2014-10-30 20:34:33
【问题描述】:

我一直在玩表单,似乎无法理解为什么cleaned_data 没有给我任何可用的输出(也就是字典似乎完全是空的)。 id 喜欢做的是在页面上有一个带有两个日期选择器的表单,这样用户就可以选择从日期到日期,然后 Django 将查询具有定期热电偶测量值的数据库并创建一个表。

views.py

def temperature_data(request):
    date_select_form = CalLabDateSelect(request.POST)

    if request.method == 'POST':        
        if date_select_form.is_valid(): # All validation rules pass
            print "this should be some date/time data from date_select_form:", date_select_form.cleaned_data
            #return HttpResponseRedirect('/test_page/') # Redirect after POST

    raw_data = Callab.objects.all().using('devices').order_by('-time')
    return render_to_response("temperature_display.html",
                              locals(),
                              context_instance=RequestContext(request))

forms.py

def make_custom_datefield(f):
    formfield = f.formfield()
    if isinstance(f, models.DateField):
        formfield.widget.format = '%m/%d/%Y'
        formfield.widget.attrs.update({'class':'datePicker', 'readonly':'true'})
    return formfield

class CalLabDateSelect(forms.Form):
    formfield_callback = make_custom_datefield

当我访问该页面并选择一个日期然后提交我看到此输出到控制台的表单时:

QueryDict: {u'date': [u'10/04/2014'], u'csrfmiddlewaretoken': [u'C5PPlMU3asdFwyma9azFDs4DN33CMmvK']}
这应该是来自 date_select_form 的一些日期/时间数据:{}

我只注意到字典是空的 {} 但 request.POST 数据显示 10/04/2014???

任何想法为什么会发生这种情况??

非常感谢大家帮助理解这一点!

【问题讨论】:

    标签: python django forms


    【解决方案1】:

    您的表单实际上并没有定义任何字段,所以我不知道您期望在cleaned_data 中得到什么。 formfield_callback 仅在 ModelForm 中有用,它对模型已经定义的字段进行操作:但您的表单不是基于模型。

    要么使用模型表单,要么在表单类中明确定义表单字段。

    【讨论】:

    • 谢谢丹尼尔。也不知道我在期待什么!哈哈。我花了一些时间练习我找到的一些教程(非常感谢 Mike Hibbert 的 Django YouTube 系列!!),现在我对表单工作流程感觉更舒服了。虽然我仍然不确定如何创建和验证日期/时间选择器,但我将继续练习基础知识。我只希望我能及时完全掌握这个概念。顺便说一句,我会拒绝你,但我需要 15 个 StackExchange 的东西才能被允许。但再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2021-10-19
    相关资源
    最近更新 更多