我可以拥有一个模型,可以在Greogorian中保存数据库中的日期,但可以在Jalali中获取和显示。 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()
我应该在表格中找到日期。使用commit = False是好主意但是如果我使用FormModel会怎样?
转换为jalali是通过模板标记完成的:
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)
如何在Form中使用jalali获取日期并使用ModelForm将其转换为模型?
答案 0 :(得分:0)
你应该扩展标准的Django Date Widget,并覆盖 format_value (用于从DB检索gregorian并显示jalali。)和 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.
我建议您同时编写一个小部件以及渲染方法,因为jalali日历会有所不同,您需要一个不同的日历小部件。然后覆盖这两个方法。 然后,您可以指定在该字段的模型表单上使用哪个窗口小部件。