Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用波斯日历更改Django日历的类型?_Python_Django_Persian Calendar - Fatal编程技术网

Python 如何使用波斯日历更改Django日历的类型?

Python 如何使用波斯日历更改Django日历的类型?,python,django,persian-calendar,Python,Django,Persian Calendar,我使用的是Django 1.6 当我有一个包含datetime字段类型的字段时,Django会自动使用Django日历 但是在伊朗我们使用的是波斯日历(或者贾拉利日历或者波斯语日历) 如何更改Django自动生成,因为它在第页中生成波斯日历 另一方面,我想用波斯日历更改默认日历 您可能需要实现自己的日历-我认为Django目前还没有提供波斯日历小部件 有一个可用的,我可以找到,但尚未测试。如果它不是一个完美的选择,那么希望它能帮助您编写自己的解决方案。只需添加到公认的答案中,Jalali日期字段

我使用的是Django 1.6

当我有一个包含
datetime字段
类型的字段时,
Django
会自动使用
Django日历

但是在伊朗我们使用的是波斯日历(或者
贾拉利日历
或者
波斯语日历

如何更改Django自动生成,因为它在第页中生成
波斯日历

另一方面,我想用
波斯日历
更改
默认日历


您可能需要实现自己的日历-我认为Django目前还没有提供波斯日历小部件


有一个可用的,我可以找到,但尚未测试。如果它不是一个完美的选择,那么希望它能帮助您编写自己的解决方案。

只需添加到公认的答案中,Jalali
日期字段及其相应的日期选择器也可以在不使用任何自定义
小部件的情况下实现

首先,必须指定
DateField
,以接受Jalali格式的输入。这可以通过以下方式实现: :

现在,为了向用户显示日期选择器,您可以使用任何符合您需要的javascript日期选择器,例如。
假设该字段将作为
模型表单的一部分显示,
您可以指定负责呈现该字段的
小部件的
HTML
id

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>

$(文档).ready(函数(){
$(“#日期选择器”)。日期选择器({
minDate:2,
最大日期:“+10D”,
是的
});
});
下面是它最终的样子:
您可以使用。在管理站点内轻松将DateTimeFiled转换为JalaliDateTimeField。只有继承一个类

设置.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>

如果您只需要波斯日期字段(例如生日),这个小代码就可以了

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))

你是怎么做到的?我想做同样的事情。请解释如何在模型、视图和templates@Arman您能解释一下如何通过这个包在模型中实现日期字段吗。我想知道如何将发布的值作为日期或日期时间字段存储在数据库中。它会在第二个月的第31个月引发问题。有什么解决办法吗?
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',)
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))