2010-12-22 110 views
1

我在我的模型中有一个ForeignKey字段,我使用ModelForm来生成HTML。问题是,我想添加一个Other选项 - 我打算在其中添加JavaScript,以便在选择该选项时显示教科书。django ModelForm覆盖字段没有效果

我看http://docs.djangoproject.com/en/1.2/topics/forms/modelforms/#overriding-the-default-field-types-or-widgets,并开始了与试图像

class Event(models.Model): 
    name = models.CharField(max_length=200) 
    time = models.DateField() 
    . 
    . 
    . 
    cost = models.CharField(max_length=200) 
    affiliation = models.ForeignKey('Affiliation') 
    def __unicode__(self): 
     return self.name 

class EventForm(ModelForm): 
    cost = models.TextField() 
    class Meta: 
     model = Event 

cost东西应该成为一个文本字段,而不是炭场,所以输出应该是textarea而不是input[type=text]。然而,这并没有改变,没有打印错误,也没有发生任何事情。我希望通过做

class EventForm(ModelForm): 
    affiliations = list(Affiliation.objects.all()).append('Other') 
    affiliation = forms.CharField(choices=affiliations) 
    class Meta: 
     model = Event 

我使用GAE的Django nonrel如果它有助于继续,但是这是不是真的与模型的问题(或因此我认为...),所以我不不认为它会改变任何事情。任何帮助将非常感激!

回答

2

我的天堂” t使用django-nonrel,所以采取这个技巧一粒盐(YMMV)。

在您的EventForm定义中,您将cost设置为model.TextField - 但实际上您希望它是带有textarea小部件的forms.CharField

+0

forms.TextField不存在,其'一个带有textarea输入的CharField :) – 2010-12-22 22:17:10

1

您的问题是EventForm是压倒成本与models.TextField()当它应该是forms.CharField(widget=forms.Textarea())