Django中的自定义表单字段

时间:2014-03-20 10:54:03

标签: python django

我知道如何使用models.py在forms.py和views.py中创建表单,但想要创建一个birthdate字段。众所周知,我们可以做到birthdate = models.DateTimeField()。但是,问题是用户必须输入YYYY-MM-DD-HH-MM-SS来输入他们的生日。

那么这里的任何人都有优雅的方式让用户输入他们的生日吗?

由于

3 个答案:

答案 0 :(得分:3)

我相信你正在寻找一个更好的DateTimeWidget,而不是字段本身。其次,除非它真的必要,否则你更有可能使用DateField而不是DateTimeField来记录用户的生日;)

这里只是自定义日期时间输入窗口小部件的一个示例,但还有更多:

https://github.com/asaglimbeni/django-datetime-widget

在表格中,你会这样做:

birthdate = forms.DateTimeField(widget= ...)

欢呼声

答案 1 :(得分:2)

如果需要,您可以使用models.DateField和自定义DATE_INPUT_FORMATS:

https://docs.djangoproject.com/en/dev/ref/settings/#date-input-formats

答案 2 :(得分:2)

当然。将日期选择器绑定到生日输入。

请参阅jQuery UI的datepicker小部件。

方法是:

  1. 用户从datepicker小部件中选择一个日期。
  2. 根据所选日期自动填充brithday输入get。
  3. 表单提交后,输入中的值将转到后端。
  4. <强>更新

    示例:

    在你的模板中:

    <form action=".">
        ...
        {{ form.birthdate }}
        ...
    </form>
    
    <script>
    $(function() {
        $( "#id_birthdate" ).datepicker({
            changeYear: true,
            changeMonth: true,
        });
    });
    </script>
    

    id输入的birthdate肯定会是id_birthdate,因为这就是Django将id分配给字段的方式,这就是你需要的传递脚本的功能。

    另外,在项目中加入jqueryui.js