python - Django 模型中 TimeField 的半小时选择字段
问题描述
我希望以用户可以选择半小时选择小时的形式进行字段选择。我有这个模型和这个TimeField
:
class Sample:
start_time = models.TimeField(choices=global_vars.TIME_MAP_HALF_HOURS_CHOICES,)
我想向客户展示半小时的时间。这是我的选择:
TIME_MAP_HALF_HOURS_CHOICES = (
(datetime.time(00, 00, 00), '00:00'),
(datetime.time(00, 30, 00), '00:30'),
(datetime.time(1, 00, 00), '01:00'),
(datetime.time(1, 30, 00), '01:30'),
(datetime.time(2, 00, 00), '02:00'),
(datetime.time(2, 30, 00), '02:30'),
(datetime.time(3, 00, 00), '03:00'),
(datetime.time(3, 30, 00), '03:30'),
(datetime.time(4, 00, 00), '04:00'),
(datetime.time(4, 30, 00), '04:30'),
(datetime.time(5, 00, 00), '05:00'),
(datetime.time(5, 30, 00), '05:30'),
(datetime.time(6, 00, 00), '06:00'),
(datetime.time(6, 30, 00), '06:30'),
(datetime.time(7, 00, 00), '07:00'),
(datetime.time(7, 30, 00), '07:30'),
(datetime.time(8, 00, 00), '08:00'),
(datetime.time(8, 30, 00), '08:30'),
(datetime.time(9, 00, 00), '09:00'),
(datetime.time(9, 30, 00), '09:30'),
(datetime.time(10, 00, 00), '10:00'),
(datetime.time(10, 30, 00), '10:30'),
(datetime.time(11, 00, 00), '11:00'),
(datetime.time(11, 30, 00), '11:30'),
(datetime.time(12, 00, 00), '12:00'),
)
但是当我想保存对象时,表单无法验证并引发错误:Choose a valid option.
如何解决此错误?
解决方案
因为在模型中而不是在模型TimeField
中设置选择更可取。Form
在使用自定义小部件(而不是)在表单中设置时间选择时检查此答案。Select
forms.TimeField
此外, format ofTIME_MAP_HALF_HOURS_CHOICES
建议将其与forms
字段选择一起使用(因为它包含value
-representation
元组),而不是与model
字段选择(使用key
-value
元组)一起使用。这可能会导致错误。此外,时间表示似乎不是模型关注的问题 - 它可能具有允许的 datetime.time 对象列表,但如何表示这些值 - 视图和表单可以更好地决定。
推荐阅读
- angular - 如何在ngselect中搜索值?
- android - 搜索栏不起作用
- java - 通过单独运行批处理微服务在 Spring Cloud Data Flow 上部署 Spring Batch 应用程序
- python - 如何使用 wlst 使用 python 脚本获取部署 heatlh
- reactjs - React native - 无法在没有 Expo 的情况下启动服务器连接到开发服务器
- c++ - 如何在 C++11 的模板中使用模板?
- node.js - 使用无服务器框架上传时文件在 S3 上损坏
- json - 如何使用邮递员在错误消息中返回键/值进行 ajv 验证
- angularjs - 对于复选框,ng-dropdown-multiselect 在 angularjs 中与 ng-disabled 一起使用
- c - 如何使系统函数调用起作用?