【问题标题】:How should I use DurationField in my model?我应该如何在我的模型中使用 DurationField?
【发布时间】:2015-07-25 04:52:54
【问题描述】:

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

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

在我的模型中

user_validPeriod = models.DurationField()

尝试从我的管理面板添加一个新的 User,如果我尝试在出现的文本中输入类似 2d2 days 的内容-字段虽然我得到Enter a valid duration

谁能给我提供一个应该如何使用这个字段的例子?

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    要在 django 1.8 中使用 DurationField,您必须像这样使用 python datetime.timedelta 实例:

    考虑这个模型:

    from django.db import models
    
    class MyModel(models.Model):
        duration = models.DurationField()
    

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

    import datetime
        
    my_model = MyModel()
    my_model.duration = datetime.timedelta(days=20, hours=10)
    

    并以这种方式查询:

    # 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))
    

    有关 datetime.timedelta here 和 DurationField here 的更多信息。

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

    【讨论】:

    • 嗨,Charlesthk,在您的回答中,您根本没有使用 DurationField。更不用说我找不到有人使用它的例子。如果没有人使用,它存在的目的是什么?
    • 感谢您的编辑。我确信它尽可能明确,但这是我第一次使用 Django,所以你必须原谅我的无知。到目前为止,我知道向我的模型添加值的方式,以及我希望管理员或用户这样做的方式是通过管理面板中的表单吗?
    • 是的,您可以使用管理员!如果你的答案是好的,你可以接受它;-)
    • 问题是我不能。我更新了这个问题,希望让它更清楚。
    猜你喜欢
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 2011-05-03
    • 1970-01-01
    • 2012-02-21
    • 2012-02-09
    • 2012-02-06
    相关资源
    最近更新 更多