当前位置:  开发笔记 > 后端 > 正文

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

如何解决《为什么我的排除字段仍然出现在这个Django表单中?》经验,为你挑选了1个好方法。

我正在使用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
{% csrf_token %}
{{ form|as_uni_form }}

这看起来应该很简单,我知道我之前已经成功完成了.我删除/重新创建了我的数据库并清除了我的浏览器缓存,只是为了确保这不是一个因素.我也试过把它变成一个HiddenInput字段,就像some_other_field(也是一个ForeignKey字段),但它仍然出现在表单上.

这里有什么东西我不见了吗?uni_form会以某种方式覆盖设置吗?如果没有,任何关于我在调试中可能会寻找什么的建议,看看这是怎么回事?

(使用Django 1.2.7版)



1> second..:

排除需要一个元组,所以你需要

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

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


嗯,我这里的运气不好.我排除了这个领域并确保在该领域之后有逗号.该字段仍然会被渲染.
推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有