2012-03-11 110 views
0

在模型中我有整数字段。此字段的值的含义是“自1970年1月1日以来的天数”,因此我想在管理界面中使用AdminDateWidget作为日期显示它,以便更容易地选择日期。用Django自定义值的自定义小部件admin

我唯一的想法是创建新的窗口小部件,以整数转换成日期:

class ExpireWidget(AdminDateWidget): 
    def render(self, name, value, attrs=None): 
     if isinstance(value, (int, long)): 
      value = datetime.date(1970, 1, 1) + datetime.timedelta(value) 
     return super(ExpireWidget, self).render(name, value, attrs) 

而下面的代码在admin.py

class LdapUserAdminForm(forms.ModelForm): 
    class Meta: 
     widgets = { 
      'shadow_expire': ExpireWidget 
      } 

当我在管理员日期显示它一切正常,但在保存之前,我应该将日期转换为整数。我认为我可以使用clean_field_name函数来实现它,但是在clean_field_name(它是clean()?)之前执行了一些验证,并且我得到了应输入整数值的错误。

如何在验证前将日期转换为int?

回答