Open iamliji opened 4 years ago
@legee سلام مطمئن هستید که براساس داکیومنت و مثال های موجود کد خود را پیاده سازی کردید؟
شما از طریق فرم جنگو این فیلد را پر کردید یا از طریق دیگری؟
با سلام
converted manually.
@legee در کدی که سری قبل به من نشون دادید فکر میکنم که چند نکته رو باید بیان کنم
زمانی که شما از JalaliDateField استفاده میکنید، سمت فرآنت شما تاریخ شمسی وارد میکنید اما به محض این که فرم اعتبارسنجی میشه در واقع
form.is_valid()
صدا زده میشه، تاریخ ها به میلادی تبدیل میشوند و شما اگر مقدار فیلد را بگیرید یک تاریخ میلادی خواهد بود. و زمانی هم که فرم را ذخیره کنید تاریخ میلادی ذخیره خواهد شد نه شمسی.
حال ممکن است که شما بخواهید در فرم یا ویو از مقدار شمسی آن استفاده کنید، طبیعتا باید مقدار میلادی را در یک متغییر دیگر به شمسی تبدیل کنید. دقت کنید که مقدار درون فرم را نباید شمسی کنید. برای تبدیل تاریخ میلادی به شمسی میتوانید همانند داکیومنت از کد زیر استفاده کنید
from jalali_date import datetime2jalali, date2jalali
jalali_date = datetime2jalali(form.cleaned_data['my_field'])
در نهایت فکر میکنم علت این که در دیتابیس تاریخ شمسی ذخیره شده است این است که شما در فرم یا ویو مقدار آن را از به صورت دستی از میلادی به شمسی تبدیل کرده اید
سلام من هم همین مشکل رو دارم در فرمهای ادمین به صورت میلادی ذخیره میشود اما در فرمهای خودم به صورت شمسی ذخیره میشود.
به صورت فوق در فرم html استفاده میکنم.
@legee در کدی که سری قبل به من نشون دادید فکر میکنم که چند نکته رو باید بیان کنم
زمانی که شما از JalaliDateField استفاده میکنید، سمت فرآنت شما تاریخ شمسی وارد میکنید اما به محض این که فرم اعتبارسنجی میشه در واقع
form.is_valid()
صدا زده میشه، تاریخ ها به میلادی تبدیل میشوند و شما اگر مقدار فیلد را بگیرید یک تاریخ میلادی خواهد بود. و زمانی هم که فرم را ذخیره کنید تاریخ میلادی ذخیره خواهد شد نه شمسی.
حال ممکن است که شما بخواهید در فرم یا ویو از مقدار شمسی آن استفاده کنید، طبیعتا باید مقدار میلادی را در یک متغییر دیگر به شمسی تبدیل کنید. دقت کنید که مقدار درون فرم را نباید شمسی کنید. برای تبدیل تاریخ میلادی به شمسی میتوانید همانند داکیومنت از کد زیر استفاده کنید
from jalali_date import datetime2jalali, date2jalali jalali_date = datetime2jalali(form.cleaned_data['my_field'])
در نهایت فکر میکنم علت این که در دیتابیس تاریخ شمسی ذخیره شده است این است که شما در فرم یا ویو مقدار آن را از به صورت دستی از میلادی به شمسی تبدیل کرده اید
اگر مقادیر تاریخ که با تابع تبدیل کردیم به شمسی بخواهیم در همون مدل متصل به فرم ذخیره بکنیم باید کار بکنیم؟
در دادگان به صورت شمسی ذخیره میشود![Capture](https://user-images.githubusercontent.com/34378752/67641000-9326d000-f913-11e9-9bfa-a15c3d38f9ee.PNG)