Вы можете просто передать время
if (time() < strtotime('2 pm')) {
//not yet 2 pm
}
Или передать дату в явном виде
if (time() < strtotime('2 pm ' . date('d-m-Y'))) {
//not yet 2 pm
}
На основе этой идеи я создал новый класс db.fields EuDateField:
mydbfields.py
from django import forms
from django.forms.fields import DEFAULT_DATE_INPUT_FORMATS
from django.db import models
class EuDateFormField(forms.DateField):
def __init__(self, *args, **kwargs):
kwargs.update({'input_formats': ("%d.%m.%Y",)+DEFAULT_DATE_INPUT_FORMATS})
super(EuDateFormField, self).__init__(*args, **kwargs)
class EuDateField(models.DateField):
def formfield(self, **kwargs):
kwargs.update({'form_class': EuDateFormField})
return super(EuDateField, self).formfield(**kwargs)
Обратите внимание, что он добавляет мой формат (например, 31.12.2007) к существующему "стандартному" django форматы в первую очередь.
Использование:
from mydbfields import EuDateField
class Person(models.Model):
...
birthday = EuDateField("Birthday", null=True, blank=True, help_text="")
В моем случае это хорошо отображается в админке, но, скорее всего, тоже будет в ModelForm (не пробовал).
Моя версия django:
>>> import django
>>> django.get_version()
u'1.1 alpha 1 SVN-10105'
На данный момент вы должны сделать это сами, но это довольно легко сделать с помощью класса настраиваемого поля формы, который устанавливает аргумент input_formats для DateField. Это должно сделать это:
class MyDateField(forms.DateField):
def __init__(self, *args, **kwargs):
kwargs.setdefault('input_formats', ("%d-%m-%Y",))
super(MyDateField, self).__init__(*args, **kwargs)
Обратите внимание, что input_formats - это список, поэтому вы можете указать несколько вариантов, и он будет проверять их по порядку при синтаксическом анализе пользовательского ввода.
Похоже, что это еще не поддерживается , насколько я понимаю, так что да, вам придется пока проделать некоторую индивидуальную работу.