2016-10-23 3 views
0

У кого у меня есть модель, которая может сохранить дату в базе данных в Greogorian, но получить и показать в Джалали. jdatetime очень хорошо, но django_jalali, который использует jdatetime для django, не классный и имеет плохую документацию. поэтому я просто хочу использовать jdatetime.модель конвертировать поле автоматически?

с jdatetime Я могу конвертировать даты.

from jdatetime import date as jdate 
from datetime import date 
#get jalali date from gregorian 
jd = jdate.fromgregorian(date=date.today()) 
#get gregorian date from jalali 
gd = jd.togregorian() 

Я должен получать даты в Формах. using commit = False - хорошая идея, но что, если я использую FormModel?

преобразования в Джалали осуществляется тегом шаблона:

from jdatetime import date as jdate 
def tojalali(value, arg=None): 
    d = jdate.fromgregorian(date=value) 
    return str(d.year) + '/' + str(d.month) + '/' + str(d.day) 

register.filter('tojalali',tojalali) 

Как я могу получить дату в Джалал в форме и конвертировать его для модели с помощью ModelForm?

ответ

0

Вы должны расширить стандартный Django Дата виджет и переопределить format_value (для извлечения н.с. из БД и показывать Джалали.) И get_value_from_data_dict методы.

Что-то вроде

class CategoryWidget(forms.TextInput): 
    def __init__(self,attrs=None): 
     super(CategoryWidget, self).__init__(attrs) 
    def value_from_datadict(self, data, files, name): 
     #Your Code to process from jalali to gregorian. 

    def format_value(self, value): 
     #Your Code to process from gregorian to jalali. 

Detailed Tutorial Django Docs

Я хотел бы предложить вам написать виджет вместе с метод отрисовки, а также, так как календарь Джалали будет отличаться, и вы должны были бы другой календарь виджет. Затем переопределите два метода. Затем вы можете указать, какой виджет использовать в форме модели для этого поля.

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