2010-07-28 4 views
0

J'ai un champ de modèle personnalisé, qui peut avoir un argument 'chaîne'.Passer automatiquement des attributs supplémentaires au widget


from django.db import models 

class ChainField(object): 
    def __init__(self, *args, **kwargs): 
     chain = kwargs.get('chain', False) 
     if chain: 
      self.chain = chain 
      del kwargs['chain'] 

     super(self.__class__.__mro__[2], self).__init__(*args, **kwargs) 

class DateTimeField(ChainField, models.DateTimeField): 
    pass 

Et maintenant la question suivante: comment je peux passer automatiquement l'argument « chaîne » du champ modèle en widget classe lors de l'initialisation ModelForm? Je ne vois pas qu'en html il devient 'class = "chainxxx"' attribut du champ de forme.

Répondre

0

Remplacer __init__ du ModelForm comme ceci:

class MyClass(ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(MyClass, self).__init__(*args, **kwargs) 

     chain_value = self.fields['name_of_the_field'].chain 
     self.fields['name_of_the_field'].widget = CustomWidget(chain=chain_value) 
Questions connexes