Как принять локализованный формат даты (например, дд / мм / гг) в DateField в форме администратора? - PullRequest
3 голосов
/ 13 марта 2010

Можно ли настроить приложение django так, чтобы оно принимало локализованный формат даты (например, дд / мм / гг) в DateField в форме администратора?

У меня есть модель класса:

class MyModel(models.Model):    
    date  = models.DateField("Date")    

И связанный админ класс

class MyModelAdmin(admin.ModelAdmin):
     pass

В интерфейсе администрирования django я хотел бы иметь возможность вводить дату в следующем формате: дд / мм / гггг. Однако в поле даты в форме администратора ожидается гггг-мм-дд.

Как я могу настроить вещи? Примечание: я уже указал свой код пользовательского языка (fr-FR) в settings.py, но, похоже, он не влияет на ввод данных этой даты.

Заранее спасибо за ответ

Ответы [ 2 ]

4 голосов
/ 13 марта 2010

Система администратора использует значение по умолчанию ModelForm для редактирования объектов. Вам нужно будет предоставить пользовательскую форму, чтобы вы могли начать переопределять поведение полей.

Внутри формы модели переопределите поле с помощью DateField и используйте параметр input_formats .

MY_DATE_FORMATS = ['%d/%m/%Y',]

class MyModelForm(forms.ModelForm):
    date = forms.DateField(input_formats=MY_DATE_FORMATS)
    class Meta:
        model = MyModel

class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm
2 голосов
/ 10 июня 2010

Исправление, предложенное Беном, работает, но календарь справа больше не отображается.

Вот улучшение. Календарь по-прежнему будет отображаться, а дата будет отображаться в формате% d %% M /% Y.

from django.forms.models import ModelForm
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField  

class MyModelForm(ModelForm):
    date = DateField(input_formats=['%d/%m/%Y',],widget=AdminDateWidget(format='%d/%m/%Y'))
    class Meta:
        model = MyModel

class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm

При нажатии на день в календаре значение поля имеет формат% Y-% m-% d, но принимается как допустимый формат даты.

PS: Спасибо Даниэлю Роузману за ответ на этот вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...