django modelform排除字段仍然显示

时间:2012-02-10 12:19:55

标签: django

django 1.3:

我的ModelForm中有一个排除的字段,在使用.as_table(),as_p()方法等构建表单时仍然显示

我在模板文件和shell中尝试过,排除字段显示在exclude变量中,但它似乎没有影响。

型号:

class UserTrans(models.Model):
    usertransid = models.AutoField(primary_key=True)
    userid = models.ForeignKey(User, db_column='userid')
    transdate = models.DateField(verbose_name="Date")
    data = models.DecimalField(max_digits=15, decimal_places=2)
    class Meta:
        db_table = u'usertrans'


class TransForm(ModelForm):
    class Meta:
        model=UserTrans
        exclude = ('userid',)

当我打开shell并尝试:

x=TransForm()
x.as_table()

或在模板中

{{ form.as_table }} or 
{{ form.as_p }}

它显示userid字段以及其余字段。 如果我尝试x.exclude它会显示('userid',),所以我知道语法是正确的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我很确定你的代码中没有显示其他内容。但是,有一个黑客。为您的模型表单添加__init__,在其中从表单的fields属性(这是一个字典)中删除“userid”。