我试图在Django MechanForm表格中设置DateTimeRangeField,但收到验证错误"此字段是必需的".Django似乎没有将psycopg2.extras.DateTimeTZRange实例或任何日期字符串识别为有效值.

如何设置DateTimeRangeField的值?

精简示例:

# models.py
from django.contrib.postgres.fields import DateTimeRangeField

class Reservation(models.Model):
    range = DateTimeRangeField()

# forms.py
class ReservationForm(forms.ModelForm):
    class Meta:
        model = Reservation
        exclude = []

# test.py
from psycopg2.extras import DateTimeTZRange

form = ReservationForm(data={
    'range': DateTimeTZRange(
        lower='2024-04-21 10:00',
        upper='2024-04-21 11:00'
    )
})

if form.is_valid():
    form.save()
else:
    print(form.errors.as_data())

输出: {'range': [ValidationError(['This field is required.'])]} {'range': [ValidationError(['This field is required.'])]} {'range': [ValidationError(['This field is required.'])]}

推荐答案

您通过以下方式传递数据:

form = ReservationForm(
    data={
        'range_0': '2024-04-21 10:00',
        'range_1': '2024-04-21 10:00',
    }
)

A RangeWidget使用subwidgets来渲染from和to.这些后缀以"索引"为后缀,因此在本例中为range_0range_1.

Django相关问答推荐

我希望用户能够预订相同的桌子,但不是在同一时间

Django 应用程序似乎无法识别相关名称?

如何使用 matplotlib 在绘图的角落插入小图像?

使用 Django 和 South 重命名应用程序

Django中基于令牌的身份验证

Django ORM,按天分组

在 Scrapy 中访问 django 模型

如何在 django tests.py 中创建管理员用户

Django 相当于 COUNT 和 GROUP BY

从python中的URL获取查询字符串的最佳方法?

Django:get_or_create 使用 together_unique 引发重复条目

如何在 Django 中返回静态 HTML 文件作为响应?

从 django/python 中的 request.POST 检索列表项

在 django admin 中链接到外键对象

Table doesn't exist表不存在

在 Celery 任务中运行 Scrapy 蜘蛛

ProgrammingError: 安装 Psycopg2 后,关系django_session不存在错误

Django/Python初学者:执行python manage.py syncdb时出错-找不到psycopg2

为整个结果集向 Django Rest Framework 结果添加额外数据

在 Django 中使用 select_related Select 特定字段