Django表单中的日期和时间字段

时间:2014-10-18 12:54:47

标签: python django

我的django形式和模型中有两个字段,一个是日期,另一个是时间。我想在数据库中提交日期和时间。但我还没有成功。请提供一些可以实现的代码。

form.py

class dated1(forms.ModelForm):
    cur_date=forms.DateField()
    cur_time=forms.TimeField(datetime.time)
    class Meta:
        model=dated

model.py

class dated(models.Model):
    cur_date = models.DateField()
    cur_time = models.TimeField()
    def __unicode__(self):
        return self.cur_date

view.py

def datetime1(request):
    if request.method =='POST':
        form = dated1(request.POST)
        if form.is_valid():
            f=dated(
                cur_date=request.POST('cur_date'),
                cur_time=request.POST('cur_time'),
            )
            f.save()
            return HttpResponse("Success")
        else:
            return HttpResponse("Failure")
    else:
        form = dated1()
        return render(request, 'formdata/dt.html',{'form': form})

2 个答案:

答案 0 :(得分:0)

而不是

f=dated(
          cur_date=request.POST('cur_date'),
          cur_time=request.POST('cur_time'),
        )
 f.save()

试试这个

f = form.save(commit=False)
f.save()

答案 1 :(得分:0)

在模板中,我做了一些更改:

{% extends 'formdata/template1.html' %}
{% block js %}
  <script type="text/javascript">
        $(function()
        {
            $( "#id_cur_date" ).datepicker({dateFormat: $.datepicker.ATOM});
        });

        $(function()
        {
            $('#id_cur_time').timepicker({timeFormat: 'H:i:s'});
        });


</script>
{% endblock %}
{% block content %}
    <form id="dtform" method="post" action="#">
        {% csrf_token %}
        <h3>Date:</h3>
        {{ form.cur_date }}
        <h3>Time:</h3>
        {{ form.cur_time }}&nbsp;<br>
        <input type="submit" value="submit">
        </form>
{% endblock %}

然后我在views.py

中做了一些更改
def datetime1(request):
if request.method =='POST':
    form = dated1(request.POST)
    f=dated(
        cur_date=request.POST['cur_date'],
        cur_time=request.POST['cur_time']
    )
    f.save(force_insert=True)
    return HttpResponse("Success")
else:
    form = dated1()
    return render(request, 'formdata/dt.html',{'form': form})

现在当我删除&#34;如果form.is_valid()&#34;在视图中,它已经以我想要的标准格式成功提交。我还通过jQuery添加了日期选择器和时间选择器。 有了这个答案我的问题是;为什么声明&#34;如果form.is_valid()&#34;在上述情况下没有工作。 @abhi @Paul Collingwood