2010-12-10 3 views
0

Je dois ajouter un colorpicker à mon modèle django et écrire un widget personnalisé. Cependant quand j'ajoute ce colordfield à mon modèle, django donne cette erreur:Ajout d'un champ personnalisé et mise à jour d'un problème de modèle dans django

column mediaplanner_ievent.color does not exist 
LINE 1: ...nt"."bits", "mediaplanner_ievent"."capture_link", "mediaplan... 

Mon modèle est:

from mediaplanner.custom_widgets import ColorPickerWidget 

class ColorField(models.CharField): 
     def __init__(self,*args, **kwargs): 
       kwargs['max_length'] = 10 
       super(ColorField, self).__init__(*args, **kwargs) 

     def formfield(self, **kwargs): 
       kwargs['widget'] = ColorPickerWidget 
       return super(ColorField, self).formfield(**kwargs) 


class iEvent(models.Model): 
    name = models.CharField(verbose_name= u"Uygulama Adı", max_length=100, unique=True) 
    bits = models.CommaSeparatedIntegerField(verbose_name= u"Bitler",max_length=100) 
    capture_link = models.URLField(verbose_name= u"Capture URL", null=True, blank=True) 
    color = ColorField(blank=true) 
    class Meta: 
     verbose_name = u"red button" 
     verbose_name_plural = u"red buttonlar" 

    def __unicode__(self): 
     return smart_str("%s"% self.name) 

La chose étrange est, quand je regardais ma base de données, il existe colorfield. Je ne veux pas supprimer le db et le charger à nouveau. Mais bien sûr, si c'est la seule solution, alors pas le choix ..

Alors quelqu'un peut m'aider à le résoudre?

+1

votre problème semble être assez clair pour moi, vous n'utilisez pas 'colorfield' dans votre définition de modèle! de plus, il vous manque un champ 'color' dans votre db, pas' colorfield'; vous avez probablement ajouté ce champ après que la table a été créée ... Aussi les noms de pls vos noms conformément aux directives de django! –

+0

désolé pour cela, j'ai mis à jour l'information – iva123

Répondre

0

Le champ dans votre base de données est nommé colorfield bu le champ dans votre modèle est nommé color. Vous devez changer l'un ou l'autre pour le faire fonctionner à nouveau.

Questions connexes