django ModelForm覆盖字段无效

时间:2010-12-22 22:10:14

标签: python django django-forms

我的模型中有一个ForeignKey字段,我正在使用ModelForm来生成HTML。问题是,我想添加一个Other选项 - 我计划在其中添加JavaScript,以便在选中时显示教科书。

我正在看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,但这对模型来说并不是真正的问题(或者我认为......)所以我认为它不应该改变任何东西。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

我没有使用过django-nonrel,所以请小心一点(YMMV)。

EventForm定义中,您将cost设置为model.TextField - 但实际上您希望它是forms.CharField,并带有textarea小部件。< / p>

答案 1 :(得分:1)

您的问题是,当models.TextField()

时,forms.CharField(widget=forms.Textarea())的EventForm会降低成本

答案 2 :(得分:0)

CharField可以有选择吗? Django文档显示了一个“ChoiceField”,它似乎就是你想要的......

http://docs.djangoproject.com/en/1.2/ref/forms/fields/#charfield