2012-03-11 2 views
0

Dans le modèle, j'ai un champ entier. Signification de la valeur de ce champ est "nombre de jours depuis 1.1.1970", donc je voulais l'afficher dans l'interface d'administration comme une date en utilisant AdminDateWidget pour permettre une sélection plus facile de la date.Widget personnalisé avec valeur personnalisée dans Django admin

Ma seule idée est de créer un nouveau widget pour traduire entier à ce jour:

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) 

et code suivant dans admin.py:

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

Quand je l'afficher dans la date admin tout est ok , mais avant de le sauvegarder, je devrais traduire la date en entier. Je pensais que je pourrais y parvenir en utilisant la fonction clean_field_name, mais une validation est exécutée avant clean_field_name (est-ce clean()?) Et j'obtiens l'erreur que je devrais taper la valeur entière.

Comment devrais-je traduire la date en int avant la validation?

Répondre

Questions connexes