2015-05-13 2 views
9

В моей модели я хочу, чтобы иметь возможность длительности входного сигнала, как 2 лет, 5 месяцев и т.д.Как использовать DurationField в моей модели?

В версии 1,8DurationField была введена, поэтому я попытался с помощью этого:

В моя модель у меня есть user_validPeriod = models.DurationField()

Попытка добавить новый пользователя из моей панели администратора, если я пытаюсь вводить что-то вроде 2d или 2 дня в появившемся текстовом поле, хотя я получаю Enter a valid duration.

enter image description here

Может кто-то дать мне пример того, как предполагается, это поле будет использоваться?

ответ

10

Чтобы использовать DurationField в Джанго 1.8 вы должны использовать питон 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.

В админ панели вы можете ввести длительность со строкой с следующим форматом: hh:mm:ss

+0

Hi Charlesthk, в своем ответе вы не использовали DurationField вообще. Не говоря уже о том, что я не могу найти пример того, кто его использует. Какова цель его существования, если никто его не использует? – ealiaj

+0

отредактировал мой ответ, чтобы быть более явным – Charlesthk

+0

Спасибо за редактирование. Я уверен, что он настолько ясен, насколько это возможно, но это мой первый опыт использования Django, поэтому вам придется извинить мое невежество. Как я знаю до сих пор, чтобы добавить значения в мою модель, и как я ожидаю, что администратор или пользователь сделает это через форму в панели администратора? – ealiaj

Смежные вопросы