2012-03-11 16 views
0

私は整数フィールドを持っています。このフィールドの値の意味は「1.1.1970以降の日数」なので、管理インターフェースで日付をAdminDateWidgetとすると、日付を簡単に選択できるようになりました。私はすべてがOKである管理者日付でそれを表示していた場合Djangoのカスタム値を持つカスタムウィジェット

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

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中:

私の唯一のアイデアは、日付の整数を変換するための新しいウィジェットを作成することですそれを保存する前に、日付を整数に変換する必要があります。私はclean_field_name関数を使って達成できると思ったが、clean_field_name(それはclean()?)の前にいくつかの検証が実行され、整数値を入力する必要があるというエラーが出る。

検証前に日付をintに変換する方法を教えてください。

答えて

1

各ウィジェットには、POST/GETからデータを取り込み、そのデータをフォーム検証用に変換するメソッドがあります。

それはあなたがそれをここで使用する見ることができる方法def value_from_datadict(self, data, files, name)

です:Pseudo-form in Django admin that generates a json object on save

関連する問題