gpt4 book ai didi

django - 为什么我排除的字段仍然出现在这个 Django 表单中?

转载 作者:行者123 更新时间:2023-12-04 01:55:04 25 4
gpt4 key购买 nike

我正在使用 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
<form class='uniForm' method='POST'>
{% csrf_token %}
<fieldset class='inlineLabels'>{{ form|as_uni_form }}</fieldset>
<input type='submit' name='action' value='Save' />
</form>

这看起来应该很简单,而且我知道我之前已经成功完成了。我已经删除/重新创建了我的数据库并清除了我的浏览器缓存,只是为了确保这不是一个因素。我也尝试将其设为 HiddenInput领域,就像 some_other_field (这也是一个 ForeignKey 字段),但它仍然显示在表单上。

这里有什么我想念的吗? uni_form 是否以某种方式覆盖了设置?如果没有,关于我在调试中可能会寻找什么以查看发生这种情况的位置/原因的任何建议?

(使用 Django 1.2.7 版)

最佳答案

exclude 需要一个元组,所以你需要

# note the extra comma
exclude = ('created_by',)

django 遍历 exclude ,并且由于字符串是可迭代的(返回每个字符),因此不会引发错误

关于django - 为什么我排除的字段仍然出现在这个 Django 表单中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com