Европейская дата вводится в Django Admin

Вы можете просто передать время

if (time() < strtotime('2 pm')) {
   //not yet 2 pm
}

Или передать дату в явном виде

if (time() < strtotime('2 pm ' . date('d-m-Y'))) {
   //not yet 2 pm
}
7
задан Andor 25 May 2009 в 16:56
поделиться

3 ответа

На основе этой идеи я создал новый класс 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'
2
ответ дан 6 December 2019 в 11:52
поделиться

На данный момент вы должны сделать это сами, но это довольно легко сделать с помощью класса настраиваемого поля формы, который устанавливает аргумент 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 - это список, поэтому вы можете указать несколько вариантов, и он будет проверять их по порядку при синтаксическом анализе пользовательского ввода.

2
ответ дан 6 December 2019 в 11:52
поделиться

Похоже, что это еще не поддерживается , насколько я понимаю, так что да, вам придется пока проделать некоторую индивидуальную работу.

1
ответ дан 6 December 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: