我应该如何在我的模型中使用DurationField?

eal*_*iaj 23 python django django-models

在我的模型中,我希望能够输入持续时间,例如2年,5个月等.

1.8 版本DurationField中引入,所以我尝试使用它:

在我的模型中,我有 user_validPeriod = models.DurationField()

尝试添加一个新用户从我的管理面板,如果我尝试输入类似2D2天在出现的文本字段,虽然我得到Enter a valid duration.

在此输入图像描述

有人能给我一个如何使用这个字段的例子吗?

Cha*_*thk 33

要在django 1.8中使用DurationField,你必须使用如下的python datetime.timedelta实例:

考虑这个模型:

from django.db import models

class MyModel(models.Model):
    duration = models.DurationField()
Run Code Online (Sandbox Code Playgroud)

您可以这样设置持续时间:

import datetime

my_model = MyModel()
my_model.duration = datetime.timedelta(days=20, hours=10)
Run Code Online (Sandbox Code Playgroud)

并以这种方式查询:

# Equal
durations = MyModel.objects.filter(duration=datetime.timedelta(*args, **kwargs))

# Greater than or equal
durations = MyModel.objects.filter(duration__gte=datetime.timedelta(*args, **kwargs))

# Less than or equal
durations = MyModel.objects.filter(duration__lte=datetime.timedelta(*args, **kwargs))
Run Code Online (Sandbox Code Playgroud)

在datetime.timedelta更多信息这里和DurationField 这里.

在管理面板中,您可以使用以下格式的字符串输入持续时间: [DD] [[hh:]mm:]ss