我正在使用exclude
我的表单的Meta类来从我的表单中排除我想要以编程方式填写的字段,但它仍然在表单中显示.
以下是代码的一些摘录:
# Model class Info(models.Model): completed_by = models.ForeignKey(User, related_name='+') # Form class InfoForm(forms.ModelForm): class Meta: model = Info exclude = ('created_by',) #ETA: added comma to make this a tuple widgets = { 'some_other_field': forms.HiddenInput(), 'some_other_field2': forms.DateInput(attrs={'readonly': True}), } # View form = InfoForm(initial={'some_other_field': value}, prefix='info', instance=info) return direct_to_template(request, 'myapp/info.html', locals()) # Template
这看起来应该很简单,我知道我之前已经成功完成了.我删除/重新创建了我的数据库并清除了我的浏览器缓存,只是为了确保这不是一个因素.我也试过把它变成一个HiddenInput
字段,就像some_other_field
(也是一个ForeignKey
字段),但它仍然出现在表单上.
这里有什么东西我不见了吗?uni_form会以某种方式覆盖设置吗?如果没有,任何关于我在调试中可能会寻找什么的建议,看看这是怎么回事?
(使用Django 1.2.7版)
排除需要一个元组,所以你需要
# note the extra comma exclude = ('created_by',)
django遍历exclude
,并且由于字符串是可迭代的(返回每个字符),因此不会引发错误