a-roomana / django-jalali-date

Jalali Date support for user interface. Easy conversion of DateTimeFiled to JalaliDateTimeField within the admin site, views, forms and templates.
MIT License
295 stars 33 forks source link

استفاده از تاریخ شمسی در لایبرری django_filters.FilterSet #30

Open zahralizadeh opened 4 years ago

zahralizadeh commented 4 years ago

سلام من میخوام از دیت پیکر ( انتخاب گر تاریخ) در فیلتر ست استفاده کنم:

```python class ShareholderFilter(django_filters.FilterSet): update_datetime = django_filters.DateFromToRangeFilter(widget=django_filters.widgets.RangeWidget(attrs={'type': 'date'})) class Meta: model = company_shareholder fields = ['update_datetime'] def __init__(self, *args, **kwargs): super(ShareholderFilter, self).__init__(*args, **kwargs) # self.filters['update_datetime'] = JalaliDateField(widget=AdminJalaliDateWidget)؟؟؟؟؟؟؟؟ self.filters['update_datetime'].label="تاریخ بروزرسانی از" ```

ممنون میشم راهنمایی کنید؟

a-roomana commented 4 years ago

سلام، وقت بخیر @zahralizadeh

برای این کار شما باید فیلدهای تاریخ رو مثل حالت زیر بازنویسی کنید. چون جنبه آموزشی نیز داشت این کد رو در این جا قرار دادم.

```python import django_filters from django import forms from django_filters.fields import DateRangeField from django_filters.widgets import DateRangeWidget, SuffixedMultiWidget from jalali_date.fields import JalaliDateField, SplitJalaliDateTimeField from jalali_date.widgets import AdminJalaliDateWidget, AdminSplitJalaliDateTime from .models import One class JalaliDateRangeWidget(DateRangeWidget): def __init__(self, attrs=None): widgets = (AdminJalaliDateWidget, AdminJalaliDateWidget) super(SuffixedMultiWidget, self).__init__(widgets, attrs) class JalaliDateRangeField(DateRangeField): widget = JalaliDateRangeWidget def __init__(self, *args, **kwargs): fields = ( JalaliDateField(), JalaliDateField() ) super(DateRangeField, self).__init__(fields, *args, **kwargs) class JalaliDateFromToRangeFilter(django_filters.DateFromToRangeFilter): field_class = JalaliDateRangeField class OneFilter(django_filters.FilterSet): date = JalaliDateFromToRangeFilter(label='تاریخ') class Meta: model = One fields = ['date'] ```

```

{{ filter.form.media }} {{ filter.form.as_p }}
```

لطفا کد لایبرری یاد شده را نیز نگاه کنید تا دقیقا متوجه بشید چه اتفاقی افتاده است.