Уведомления

Группа в Telegram: @pythonsu

#1 Май 28, 2015 13:11:08

tol_drew
Зарегистрирован: 2014-09-24
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение формата ввода поля timefield

Все привет!

Такая проблема: есть модель

class Event(models.Model):
    match = models.ForeignKey(Match, verbose_name=u'Матч')
    time = models.TimeField(u'Время события')
    type = models.CharField(u'Событие', choices=EVENT_TYPES, max_length=15)
    player = models.ForeignKey(Player, verbose_name=u'Игрок')

необходимо, чтобы при вводе времени в поле time был формат мм:сс, где мм - минуты, а сс - секунды, при текущем положении дел, если ввести, напрмер 32:15, то выскакивает ошибка, т.к. 32 часов не бывает.
Есть еще такой код:
admin.py
@admin.register(Event)
class EventAdmin(admin.ModelAdmin):
    list_display = ['match', 'time', 'type', 'player']

forms.py
from django import forms
class EventAdminForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(EventAdminForm, self).__init__(*args, **kwargs)
        self.fields['time'].widget = forms.TimeInput(format='%M:%S')

но все равно ругается на неверный формат

Офлайн

#2 Май 28, 2015 13:18:33

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Изменение формата ввода поля timefield

у формы в clean можно тудой два нуля спереди присобачить и будет всё валидироваться
или запилить своё поле для модели
или хранить время в секундах



Офлайн

#3 Май 28, 2015 15:07:13

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Изменение формата ввода поля timefield

Офлайн

#4 Май 28, 2015 18:41:48

tol_drew
Зарегистрирован: 2014-09-24
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение формата ввода поля timefield

inoks
TIME_INPUT_FORMATS ?
я не понимаю как этим пользоваться, можно подробнее

Офлайн

#5 Май 28, 2015 19:09:29

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Изменение формата ввода поля timefield

Там же ссылка…
В settings.py пропишите

Офлайн

#6 Май 29, 2015 04:48:03

tol_drew
Зарегистрирован: 2014-09-24
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение формата ввода поля timefield

inoks
Там же ссылка…В settings.py пропишите
добавил в сеттингс
TIME_INPUT_FORMATS = (
        '%H:%M:%S',     
        '%H:%M:%S.%f',  
        '%H:%M',        
        '%M:%S',        
)

но все равно ругается на неверный формат времени

Отредактировано tol_drew (Июнь 1, 2015 07:11:41)

Офлайн

#7 Июнь 1, 2015 07:12:08

tol_drew
Зарегистрирован: 2014-09-24
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение формата ввода поля timefield

Кто-нибудь helpme!

Офлайн

#8 Июнь 1, 2015 07:19:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Изменение формата ввода поля timefield

tol_drew
у формы в clean можно тудой два нуля спереди присобачить и будет всё валидироваться
или запилить своё поле для модели
или хранить время в секундах
у формы в clean можно тудой два нуля спереди присобачить и будет всё валидироваться
или запилить своё поле для модели
или хранить время в секундах



Офлайн

#9 Июнь 1, 2015 15:34:55

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Изменение формата ввода поля timefield

tol_drew
добавил в сеттингс
TIME_INPUT_FORMATS = (
‘%H:%M:%S’,
‘%H:%M:%S.%f’,
‘%H:%M’,
‘%M:%S’,
)

ну вот вы подумайти логически, как при такой записи вам бэкэнд различит что:

11:00

это 11 минут, 00 секунд а не 11 часов 00 минут?

Надо вот так написать:

TIME_INPUT_FORMATS = (
        '%M:%S',
)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version