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