【问题标题】:Django validate form with RangeWidgetDjango 使用 RangeWidget 验证表单
【发布时间】:2018-05-15 21:14:45
【问题描述】:

我有一个表格:

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = ['name', 'description', 'slot',]

        widgets = {
            'slot': RangeWidget(forms.DateTimeInput()),
            }

我在视图中收到表单:

if request.POST:
    form = MyForm(data=request.POST)
    if form.is_valid():

但表单从未经过验证,因为发布的参数是:

name: 'TEST', description : 'fsd', slot_0: '2018/05/15 21:00:00', slot_1: '2018/05/15 21:30:00', submit: 'submit'

form.errors 是:

Enter a valid date/time.

我假设 django 会自动为发布的值创建一个日期时间对象的元组,但显然不是。如何验证此表单并将其保存到数据库中?

【问题讨论】:

  • 对不起,问错了:/

标签: django forms postgresql validation date-range


【解决方案1】:

您的日期时间格式不正确。尝试将以下内容添加为表单的 __init__ 方法以匹配发布数据的格式:

def __init__(self, *args, **kwargs):
    super(MyForm, self).__init__(*args, **kwargs)
    for field in self.fields['slot'].fields:
        field.input_formats.append("%Y/%m/%d %H:%M:%S")

另一种解决方案是在发送到服务器之前格式化数据。在这种情况下,您可以发送例如“2018-05-15 21:00:00”,它将匹配input_formats 列表中已存在的格式。

【讨论】:

    猜你喜欢
    • 2017-11-19
    • 1970-01-01
    • 2019-04-27
    • 2011-03-10
    • 2011-01-19
    • 2021-06-05
    • 2023-03-12
    • 2012-07-11
    • 1970-01-01
    相关资源
    最近更新 更多