2013-11-29 4 views
10

Я использую Django 1.6.Как изменить тип Django Calendar с персидским календарем?

Когда у меня есть поле DateTimeField type, Django автоматически использовать Django calendar.

Но в Iran мы используем Persian Calendar (или Jalali Calendar или Farsi Calendar).

Как я могу изменить генерацию Django, потому что она генерирует Persian calendar на странице?

В другой руке, я хочу изменить default calendar с Persian Calendar?

enter image description here

+0

Как у управлять? Я хочу сделать то же самое. –

+0

Я использовал ответ –

ответ

5

Вы, вероятно, придется реализовать свой собственный custom widget - Я не думаю, что Django предоставляет персидский виджет календаря на данный момент времени.

Существует code snippet for a Persian DateTime widget, что я смог найти, но еще не проверял. Если это не идеально подходит, то, надеюсь, это поможет вам написать собственное решение.

7

Чтобы добавить к принятому ответу, Jalali DateField с соответствующим выбором даты может быть реализован без использования каких-либо пользовательских widget.

Сначала вы должны указать свой DateField, чтобы принять его вход в формате Jalali. Это может быть достигнуто за счетом this custom model field :

from django_jalali.db import models as jmodels 

class Order(models.Model): 
delivery_date = jmodels.jDateTimeField(verbose_name='تاریخ تحویل') 

Теперь для отображения выбора даты для пользователя, вы можете использовать любой желаемый яваскрипт выбор даты, которая соответствует вашим потребностям, что-то вроде This Bootstrap Datepicker.
Предполагая, что поле будет отображаться как часть model form, вы можете указать HTMLid или class из widget ответственности за оказание ее:

class Order(forms.ModelForm): 

class Meta: 
    model = Order 
    widgets = { 
     'delivery_date': forms.DateInput(attrs={'id':'datepicker'}), 
    } 

Наконец, в шаблоне, вам нужно только инициализировать дату подборщика:

<script> 
    $(document).ready(function() { 
     $("#datepicker").datepicker({ 
      minDate: 2, 
      maxDate: "+10D", 
      isRTL: true 
     }); 

    }); 
    </script> 

Вот как это будет выглядеть в конце:
Jalali Date Picker

0

вы можете использовать django-jalali-date. Простое преобразование DateTimeFiled в JalaliDateTimeField в админ-сайт. только по наследованию класса!

settings.py

INSTALLED_APPS = [ 
    ... 
    'jalali_date', 
    ... 
] 

views.py

from jalali_date import datetime2jalali, date2jalali 

def my_view(request): 
    jalali_join = datetime2jalali(request.user.date_joined).strftime('%y/%m/%d _ %H:%M:%S') 

template.html

{% load jalali_tags %} 

<p>{{ request.user.date_joined|to_jalali:'%y/%m/%d _ %H:%M:%S' }}</p> 

администратора.ру

from django.contrib import admin 
from jalali_date.admin import ModelAdminJalaliMixin, StackedInlineJalaliMixin, TabularInlineJalaliMixin 

class MyInlines1(TabularInlineJalaliMixin, admin.TabularInline): 
    model = SecendModel 

class MyInlines2(StackedInlineJalaliMixin, admin.StackedInline): 
    model = ThirdModel 

@admin.register(FirstModel) 
class FirstModelAdmin(ModelAdminJalaliMixin, admin.ModelAdmin): 
    inlines = (MyInlines1, MyInlines2,) 
    readonly_fields = ('some_fields', 'date_field',) 

example of result!

+0

, пожалуйста, объясните, как использовать это приложение в модели, представлениях и шаблонах –

0

Если вам просто нужно персидский DateField (например, на день рождения), этот маленький код будет делать это

YEAR_CHOICES = range(1377, 1300, -1) 
MONTH_CHOICES = {1: 'فروردین',2: 'اردیبهشت',3: 'خرداد',4: 'تیر',5: 'مرداد',6: 'شهریور',7: 'مهر',8: 'آبان',9: 'آذر',10: 'دی',11: 'بهمن',12: 'اسفند'} 

class ProfileUpdate(forms.ModelForm): 
    class Meta: 
     model = Profile 
     fields = '__all__' 

    def __init__(self, *args, **kwargs): 
     super(ProfileUpdate, self).__init__(*args, **kwargs) 
     self.fields['birthday'] = forms.DateField(required=False, widget=extras.SelectDateWidget(empty_label=['سال', 'ماه', 'روز'], years=YEAR_CHOICES, months=MONTH_CHOICES)) 

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

  • Нет связанных вопросов^_^