如何创建自定义 Django 模型字段来表示一个地方的开放和关闭时间

How to create custom django model field for representing opening and closing hours of a place

我有一个关于餐厅的应用程序。您可以设置它的打开和关闭时间。我通过像这样添加两个时间字段来实现。

class Place(models.Model):
    # other fields
    opening = models.TimeField()
    closing = models.TimeField()

但是我想用一个像这样的自定义字段来做。

class Place(models.Model):
    # other fields
    operating_hours = models.DualTimeField()

1) 使用 CharField 并通过 属性 解析模型中的字符串,例如 "hh:mm - hh:mm"

2) 使用 Django 原生的 DurationField: https://docs.djangoproject.com/en/1.10/ref/models/fields/#durationfield 如果你想为开放时间建模,你需要第二个字段来定义开放时间,它正在处理 timedelta。

3) 像其他人一样使用两个 TimeField。

4) 另一个选项是 MultiSelectField,用户可以在其中 select 该地点营业的时间。

OPENING_HOURS = (
    (1,'1am'),
    (2,'2am'),
    (3,'3am'),
    (4,'4am'),
    ...
    (12,'12pm'),
)

class Place(models.Model):
    # other fields
    operating_hours = models.my_field = MultiSelectField( choices=MY_CHOICES)

参见:https://pypi.python.org/pypi/django-multiselectfield